[英]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.