Java:java.lang.UnsatisfiedLinkError无法使用JNI调用.cpp文件中的本机方法

时间:2017-03-25 05:34:43

标签: java java-native-interface

如标题中所述,我的java程序无法调用或调用.cpp文件中的本机方法,其中库.dll在程序中成功加载。 但是在运行它时会引发异常$this->viewBuilder()->autoLayout(false);。 我已经正确设置了一个项目的库路径。

这是我的cpp文件:

java.lang.UnsatisfiedLinkError

这里是.java文件:

#include "jni.h"
#include "Demojni.h"
#include <iostream>
using namespace std;

extern "c"{
   JNIEXPORT jint JNICALL _Java_demojni_Demojni_printm(JNIEnv *env, jobject   object){
      cout<<"call from c++";
      return 1;
   }
}

int main(){
   return 1; 
}

2 个答案:

答案 0 :(得分:0)

确保匹配方法名称和包名称。

看看这里:

http://docs.oracle.com/javase/7/docs/technotes/guides/jni/spec/design.html

部分:&#34;解析原生方法名称&#34;

事实上,正确设置所有内容的简便方法是使用javah。

在这里看看简单的Hello world示例:

http://jnicookbook.owsiak.org/recipe-No-001/

答案 1 :(得分:0)

您已将类的名称从DemoJNI1更改为Jni1,而不重新生成.h文件和/或不调整.c文件中JNI方法的名称。