C jni中dll加载异常
我试图用JNI实现一个简单的HelloWorld应用程序。从Java调用c函数。我创建了一个java类:C jni中dll加载异常,c,dll,java-native-interface,unsatisfiedlinkerror,javah,C,Dll,Java Native Interface,Unsatisfiedlinkerror,Javah,我试图用JNI实现一个简单的HelloWorld应用程序。从Java调用c函数。我创建了一个java类: class HelloWorld{ private native void print(); public static void main(String[] args){ new HelloWorld().print(); } static{ System.load("c://jni_training//HelloWorld.dll"); } } 然后生成一个.h文
class HelloWorld{
private native void print();
public static void main(String[] args){
new HelloWorld().print();
}
static{
System.load("c://jni_training//HelloWorld.dll");
}
}
然后生成一个.h文件,创建c实现并成功生成.dll。但我不能执行java HelloWorld…我看到了异常
Exception in thread "main" java.lang.UnsatisfiedLinkError: C:\jni_training\Hello World.dll: Can't find dependent libraries
at java.lang.ClassLoader$NativeLibrary.load(Native Method)
at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1928)
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1825)
at java.lang.Runtime.load0(Runtime.java:792)
at java.lang.System.load(System.java:1059)
at HelloWorld.<clinit>(HelloWorld.java:10
线程“main”java.lang.UnsatisfiedLinkError:C:\jni\U training\Hello World.dll中出现异常:找不到依赖库
位于java.lang.ClassLoader$NativeLibrary.load(本机方法)
位于java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1928)
位于java.lang.ClassLoader.loadLibrary(ClassLoader.java:1825)
位于java.lang.Runtime.load0(Runtime.java:792)
位于java.lang.System.load(System.java:1059)
在HelloWorld。(HelloWorld.java:10)
问题出在哪里?我也遇到过类似的问题,如果您确定msvcr90.dll是依赖项,那么您可以有多个选项
<如果你的DLL不在C++中,那么你就必须通过CLI类的形式主义来进行接口。< /P>你可以粘贴错误信息作为文本,因为我不能读取线程“Mault:java. Lang.unCurdidEdkLeCurr:C:\JNIOLLealth\\Hello Word…DLL:不能在java .Lang.CultLooper-NATIVELIRBARI.加载(本地方法)中找到相关的库。在java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1928)在java.lang.ClassLoader.loadLibrary(ClassLoader.java:1825)在java.lang.Runtime.load0(Runtime.java:792)在java.lang.System.load(System.java:1059)在HelloWorld.(HelloWorld.java:10)您使用
System.load
而不是System.loadLibrary
使用预定义的库搜索路径有什么具体原因吗?没有,没有任何原因。我没有任何具体的感觉。我用dependecy walker调查了我的dll,发现它需要MSVCR90.dll…问题就在这里。。怎么解决呢?