簡體   English   中英

Java C ++ JNI不滿意的鏈接錯誤

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM