在Java中调用C++接口需要使用JNI(Java Native Interface)技术。
下面是一个简单的示例:
首先,在C++中定义一个接口和实现:
// 接口定义class MyInterface {public: virtual void myMethod() = 0;};// 接口实现class MyImplementation : public MyInterface {public: void myMethod() { // 实现具体的功能 // ... }};然后,使用Java Native Interface(JNI)来调用C++接口。
首先,需要在Java中声明本地方法:
public class MyJavaClass { private native void callNativeMethod();}然后,使用javah命令生成C++头文件MyJavaClass.h:
javah -jni MyJavaClass得到的MyJavaClass.h文件类似如下:
#include <jni.h>#ifndef _Included_MyJavaClass#define _Included_MyJavaClass#ifdef __cplusplusextern "C" {#endifJNIEXPORT void JNICALL Java_MyJavaClass_callNativeMethod (JNIEnv *, jobject);#ifdef __cplusplus}#endif#endif接下来,在C++中实现callNativeMethod方法:
#include "MyJavaClass.h"#include "MyImplementation.h"JNIEXPORT void JNICALL Java_MyJavaClass_callNativeMethod(JNIEnv *env, jobject obj) { MyImplementation impl; impl.myMethod();}最后,使用javac命令编译Java类:
javac MyJavaClass.java使用g++命令编译C++代码:
g++ -c -fPIC MyJavaClass.cpp -o MyJavaClass.og++ -shared -o libmylibrary.so MyJavaClass.o -lc最后,运行Java程序:
java -Djava.library.path=. MyJavaClass这样就可以通过Java调用C++接口了。