共计 1163 个字符,预计需要花费 3 分钟才能阅读完成。
在 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
文件类似如下:
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class MyJavaClass */
#ifndef _Included_MyJavaClass
#define _Included_MyJavaClass
#ifdef __cplusplus
extern "C" {#endif
/*
* Class: MyJavaClass
* Method: callNativeMethod
* Signature: ()V
*/
JNIEXPORT 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.o
g++ -shared -o libmylibrary.so MyJavaClass.o -lc
最后,运行 Java 程序:
java -Djava.library.path=. MyJavaClass
这样就可以通过 Java 调用 C ++ 接口了。
丸趣 TV 网 – 提供最优质的资源集合!
正文完