这真让我抓狂!我正在用 ndk 制作一个库,链接很好,但我发现,在调用方法时,传递给相应 c 函数的参数值不正确。
我的java类如下
package ccme.usernet.love;
class LovePlayerEngine {
static {
System.loadLibrary("loveplayer");
}
public static native void init(int id);
}
我的C文件如下:
#include <jni.h>
#include <android/log.h>
#define LOGI(...) ((void)__android_log_print(ANDROID_LOG_INFO, "TEST", __VA_ARGS__))
JNIEXPORT void JNICALL Java_ccme_usernet_love_LovePlayerEngine_init(JNIEnv *env, jint id)
{
LOGI("INIT with id %d\n", id);
}
编译和库链接很好,应用程序正在运行。但是当我调用LovePlayerEngine.init(0); 在我的 java 代码的某个地方,我得到了一些不好的值,例如1079062016,它不稳定并且会在不同的运行中发生变化。
我的其他测试(例如传递变量而不是常量或传递字符串)都未能获得意外的值。
任何人都知道问题可能出在哪里?这让我感到恶心,我在以前的 ndk 项目中从未遇到过这种情况。