cocos2d-x jni통신 C++ -> Java
Programing/cocos2d-x 2012. 10. 24. 10:48 |코코스 투디에서 자바랑 jni통신을 해야 할 경우가 많다.
모 코코스엔진이 편의성을 잘 지원 하니 그냥 쉽게 통신할 수 있다.
우선
JniHelper.h 헤더 파일을 인쿠르드 하면 된다.
그러고 나면 jni.h 파일을 찾을 수 없다고 뜨는데 그때는
Program Files\Java\jdk1.7.0_05\include 을 포함 디렉토리에 추가 시켜주면 해결이 된다.
아래 소스는 ccimage에 있는 내용
JniMethodInfo methodInfo;
if (! JniHelper::getStaticMethodInfo(methodInfo, "org/cocos2dx/lib/Cocos2dxBitmap", "createTextBitmap",
"(Ljava/lang/String;Ljava/lang/String;IIII)V"))
{
CCLOG("%s %d: error to get methodInfo", __FILE__, __LINE__);
return false;
}
jstring jstrText =javaNewStringChar(methodInfo.env,text);
//jstring jstrText = new
jstring jstrFont = methodInfo.env->NewStringUTF(pFontName);
methodInfo.env->CallStaticVoidMethod(methodInfo.classID, methodInfo.methodID, jstrText,
jstrFont, (int)fontSize, eAlignMask, nWidth, nHeight);
methodInfo.env->DeleteLocalRef(jstrText);
methodInfo.env->DeleteLocalRef(jstrFont);
methodInfo.env->DeleteLocalRef(methodInfo.classID);
"org/cocos2dx/lib/Cocos2dxBitmap" 해당 클래스의 경로를 지정한다
"createTextBitmap" 실행 시킬 함수명을 지정 해준다.
"(Ljava/lang/String;Ljava/lang/String;IIII)V" 함수의 인자값을 지정해준다.
인자값 지정해주는 형식은 인터넷 검색을 하면 자세히 나오니 일단 설명은 생략
모 간단하게 이야기하면 c언어로 변환하면 string,string,int,int,int,int 이정도가 된다.
CallStaticVoidMethod(클래스,함수명,string,string,int,int,int,int )이 함수를 사용해서 자바에 있는 함수를 실행 할수 있다.
'Programing > cocos2d-x' 카테고리의 다른 글
cocos2d-x ] 사용자폰트 로드시 뻗는 현상 (0) | 2014.03.24 |
---|---|
cocos2d-x ] 안드로이드 새로운 키패드 타입 셋팅 (0) | 2014.03.17 |
cocos2d-x Jni 통신 Java -> C++ (0) | 2012.10.24 |
cocos2d-x layer 클리핑 (0) | 2012.08.23 |
cocos2d 필셀충돌처리 (0) | 2012.07.10 |