Java可以調(diào)用C++接口,但是需要使用Java Native Interface(JNI)技術(shù)。 JNI是Java平臺提供的一種機(jī)制,用于在Java虛擬機(jī)(JVM)中調(diào)用本地代碼,如C++代碼。下面是一個簡單的示例:
1.首先,在C++中編寫一個簡單的函數(shù),例如:
該函數(shù)名必須符合以下模式:
其中:
JNIEXPORT 是一個宏,它用于指示該函數(shù)應(yīng)該由JNI導(dǎo)出。
<return_type> 是函數(shù)的返回類型。
Java_<fully_qualified_class_name>_<method_name> 是Java中相應(yīng)方法的全限定名(fully qualified name)。
JNIEnv *env 是一個指向JNI環(huán)境的指針。
jobject obj 是一個代表Java對象的指針。
... 是傳遞給該方法的其他參數(shù)。
2.將該C++文件編譯為動態(tài)鏈接庫(DLL):
g++ -shared -o libmylibrary.so mylibrary.cpp
3.在Java中編寫一個類,該類包含該函數(shù)的原型,并使用System.loadLibrary()方法加載該DLL:
public class MyClass {
static {
System.loadLibrary("mylibrary");
}
private native void print();
public static void main(String[] args) {
new MyClass().print();
}
}
注意,print()方法的原型與C++函數(shù)的原型匹配。 static塊在類加載時執(zhí)行,并使用System.loadLibrary()加載DLL。
4.在Java中運(yùn)行該程序,它應(yīng)該輸出“Hello from C++!”:
$ java MyClass
Hello from C++!
這是一個簡單的示例,說明如何在Java中調(diào)用C++函數(shù)。請注意,JNI需要您精通Java和C++,因此在使用它之前,需要了解這兩種語言的基礎(chǔ)知識。