gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 11:38:39 25 4
gpt4 key购买 nike

如标题中所述,我的 java 程序无法调用 .cpp 文件中的 native 方法,其中库 .dll 在程序中成功加载。但在运行时它会抛出异常java.lang.UnsatisfiedLinkError。我已正确设置项目的库路径。

这是我的 cpp 文件:

#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;
}

这是 .java 文件:

package demojni;

public class Jni1{
private native int printm();
static{
try{
System.out.println(System.getProperty("java.library.path"));
System.loadLibrary("libCppJNILibrary_1");
System.out.println("loaded");
}
catch(Exception e){
System.out.println("can't load\n"+e.getMessage());
}
}

public static void main(String[] arg){
Jni1 api=new Jni1();
int a=api.printm();
}
}

最佳答案

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

看这里:

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

部分:“解析 native 方法名称”

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

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

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

关于Java:java.lang.UnsatisfiedLinkError 无法使用 JNI 调用 .cpp 文件中的 native 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43012949/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com