[英]java c++ jni unsatisfied link error
我是Java JNI的新手。 我尝试了helloCPP程序,但遇到了问题。 这是我的代码:
helloCPP.java;
public class helloCPP {
public native void hellocpp ();
static {
System.loadLibrary("helloCPP");
}
public static void main (String [] args) {
helloCPP hcpp=new helloCPP ();
hcpp.hellocpp ();
System.exit (0);
}
}
这是我的hellocpp.cpp,我从中制作了helloCPP.dll;
#include <iostream>
#include "helloCPP.h"
using namespace std ;
JNIEXPORT void JNICALL Java_helloCPP_hellocpp. (JNIEnv *env, jobject obj) {
cout <<"hello java, I'm c++\n";
}
int main (){};
我成功构建了helloCPP.dll。 但是,当我尝试运行java helloCPP时,出现此错误:
Exception in thread "main"
java.lang.UnsatisfiedLinkError: helloCPP.hellocpp () V
at helloCPP.hellocpp(Native Method)
at helloCPP.main (helloCPP.java :8)
我正在Windows 8 x86操作系统上执行所有这些操作。 这些是我写的命令:
javac helloCPP.java
javah helloCPP
g++ -c hellocpp.cpp
g++ -o helloCPP.dll hellocpp.cpp
这产生了错误:
java HelloCPP
提前致谢。
Java运行时很可能找不到DLL文件。 您已经使用其他参数运行了Java应用程序(假设DLL文件在当前目录中):
java -Djava.library.path=. HelloCPP
更新:
EJP有一个很好的观点。 我认为您的链接命令不正确。 第二个g ++命令应类似于:
g++ -o helloCPP.dll -shared hellocpp.o
有两个变化: hellocpp.o
代替hellocpp.cpp
,更重要的选项-shared
,表示要创建一个共享库,而不是可执行文件。
确切的选项取决于您的平台。 您尚未指定,所以我无法确定。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.