我有以下设置 - 带按钮的MainActivity启动SDLActivity(SDL2)。在我的SDL项目的C ++方面,我有一个带有声明的本机函数的main.cpp:
extern "C" void Java_org_libdsl_app_SDLActivity_nativeSetAcc (JNIEnv* env, jclass clazz, jint Acc);
void Java_org_libdsl_app_SDLActivity_nativeSetAcc (JNIEnv* env, jclass clazz, jint Acc)
{
SDL_Log ("set acc");
// does something with the Acc value
}
我在SDLActivity.java中添加了以下内容:
public static native void nativeSetAcc (int Acc);
但是我得到了不满意的链接错误(java.lang.UnsatisfiedLinkError:找不到Native方法:org.libsdl.app.SDLActivity.nativeSetAcc:(I)V)
C / SDL端编译正常(包括“jni.h”)。 android部分运行正常,直到我想使用nativeSetAcc;
奇怪的是,SDL库中的其他JNI函数确实可以工作(nativeQuit,nativeResume等)。而且我确信我做的是LoadLibrary(“main”) - main的main()中的代码正在工作(循环SDL事件等)。
查看libmain.so的hexdump,我确实看到了Java_org_libdsl_app_SDLActivity_nativeSetAcc字符串。
请帮忙!当然我错过了一些小东西,但我看不到。
答案 0 :(得分:0)