코코스 투디에서 자바랑 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 )이 함수를 사용해서 자바에 있는 함수를 실행 할수 있다.

 

 

Posted by 부우산사나이
: