我是Java JNI的新手。我嘗試了一個helloCPP程序,但遇到了問題。這裏是我的代碼:java C++ jni不滿意的鏈接錯誤
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
在此先感謝。
您不需要DLL中的main(),但您確實需要編譯器和鏈接器開關來指定生成共享庫。 – EJP