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