개인 메모겸 작성 합니다.
Java(Android) 코드
public class TESTClass {
public static int testPipe(String itemID)
{
Log.d("fromCPP", "----------------------> ok receive "+itemID);
return 999999;
}
{
Log.d("fromCPP", "----------------------> ok receive "+itemID);
return 999999;
}
}
C++ 코드
#if (CC_TARGET_PLATFORM==CC_PLATFORM_ANDROID)
JniMethodInfo info;
if(JniHelper::getStaticMethodInfo(info,
"kr/co/domain/projname/TESTClass",
"testPipe",
"(Ljava/lang/String;)I"))
{
jstring jPid = info.env->NewStringUTF("test");
jobject jobj;
jint i = info.env->CallStaticIntMethod(info.classID, info.methodID, jPid);
CCLog("----------------------> return java call : %d",i);
info.env->DeleteLocalRef(jPid);
info.env->DeleteLocalRef(info.classID);
}
JniMethodInfo info;
if(JniHelper::getStaticMethodInfo(info,
"kr/co/domain/projname/TESTClass",
"testPipe",
"(Ljava/lang/String;)I"))
{
jstring jPid = info.env->NewStringUTF("test");
jobject jobj;
jint i = info.env->CallStaticIntMethod(info.classID, info.methodID, jPid);
CCLog("----------------------> return java call : %d",i);
info.env->DeleteLocalRef(jPid);
info.env->DeleteLocalRef(info.classID);
}
#endif
결과
----------------------> ok receive test
----------------------> return java call : 999999
"(Ljava/lang/String;)I")) 설명
형식 해석
"(메소드 인자값)리턴형식"
*** 메소드 인자값
(Ljava/lang/String;) : java String
I : int
같이 쓰면 : (Ljava/lang/String;I)
*** 리턴값
I : jint
S : jString
V : Void
Ljava/lang/Object : jobject
등등 응용 하시면 자유롭게 C++ 과 Java 간 호출이 가능 하겠네요.
당신의 의견을 작성해 주세요.