java - 为什么 JNIOnLoad 没有运行?

标签 java c++ android-ndk java-native-interface

我有一个 Android 项目,其中包含 Java 基础 Activity、Java JNI 接口(interface)类和 native 代码。我有合适的

System.loadlibrary(_libraryname_);

在我的 Java 接口(interface)类和 logcat 输出中:

11-29 15:11:20.737: D/dalvikvm(8940): No JNI_OnLoad found in /data/data/com.example.testjni/lib/libTestJNI.so 0x406ef030, skipping init

在我的 cpp 文件头中:

extern "C" {
   JNIEXPORT jint JNICALL JNIOnLoad(JavaVM *, void *);
}

在cpp文件中:

JNIEXPORT jint JNICALL JNIOnLoad(JavaVM *vm, void *reserved)
{
   LOGI("JNIOnLoad");
   jvm = vm;
   return JNI_VERSION_1_6; /* the required JNI version */
}

但是 OnLoad 函数仍然没有被调用。我已尝试卸载该应用程序并重新安装它,但它从未运行过。

最佳答案

函数签名是JNI_OnLoad . JNIOnLoad 之间有一个下划线/_

关于java - 为什么 JNIOnLoad 没有运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13636937/

相关文章:

android - 关于在an​​droid中调用native方法

opencv - 这种时差的原因是什么?

java - 基于注释的配置层次结构

c++ - memcpy 模板变体中的错误

c++ - OpenCV 和 Visual Studio 配置

c++ - clock_getres 和 clock_gettime

android - 如何使 "ndk-build clean"继续出错

java - 编写java包装器

java - 多服务器到单服务器

java - 将多个 BufferedImages 添加到组件以进行拖动