저는 cocos2d-x 라이브러리가있는 약간의 프로젝트가 있습니다. 나는 자바 함수를 호출하는 C++를 사용하기 위해 노력하고있어하지만 난 라인에서 신호 11 예외가 :C++에서 Java로 JNI를 사용하여 Java를 호출 할 수 없습니다
// Get Status
status = jvm->GetEnv((void **) &env, JNI_VERSION_1_6);
그러나 이런 일이 왜 모르겠어. 트윗을 게시
private void tweet() { String score = "123"; String tweetUrl = "https://twitter.com/intent/tweet?text=Hello ! I have just got " + score + " points in mygame for Android !!!!"; Uri uri = Uri.parse(tweetUrl); startActivity(new Intent(Intent.ACTION_VIEW, uri)); }
이 기능 출시 네비게이터 : 내 자바 클래스 Getsocial.java에서
이 기능을 존재합니다. 자바에서 호출 괜찮아요. 내 C++ InterfaceJNI.h에서내가 가진 :
#ifndef __INTERFACE_JNI_H__ #define __INTERFACE_JNI_H__ #include "cocos2d.h" class InterfaceJNI { public: static void postMessageToFB(); static void postMessageToTweet(); protected: }; #endif // __INTERFACE_JNI_H__
그리고 InterfaceJNI.cpp에 :
#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID) InterfaceJNI::postMessageToTweet(); #elif (CC_TARGET_PLATFORM == CC_PLATFORM_IOS) ObjCCalls::trySendATweet(); #endif:
#include "InterfaceJNI.h" #include "platform/android/jni/JniHelper.h" #include jni.h > #include android/log.h > using namespace cocos2d; void InterfaceJNI::postMessageToTweet() { int status; JNIEnv *env; JavaVM *jvm; jmethodID mid; jclass mClass; bool isAttached = false; CCLog("Static postMessageToTweet"); // Get Status status = jvm->GetEnv((void **) &env, JNI_VERSION_1_6); CCLog("Status: %d", status); if(status AttachCurrentThread(&env, NULL); CCLog("Status 2: %d", status); if(status GetStaticMethodID(mClass, "tweet", "()V"); CCLog("mID: %d", mid); if (mid!=0) env->CallStaticVoidMethod(mClass, mid); //----------------------------------------------------------- CCLog("Finish"); if(isAttached) jvm->DetachCurrentThread(); return; }
이 인터페이스를 사용하여 코드의 일부에서 호출
null 포인터를 jvm-> GetEnv ((void **) & env, JNI_VERS에 반환하는 현상이 발생합니다. ION_1_6); ?
이 기능을 실행해도 문제가 없지만 이제는 감사하지만 실패합니다! – vgonisanz