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++,因此在使用它之前,需要了解这两种语言的基础知识。