如何使用 JavaCpp 将函数调用从 c++ 映射到 Java?

How do I map a function call from c++ to Java using JavaCpp?

本文关键字:映射 Java c++ 何使用 JavaCpp 函数调用      更新时间:2023-10-16

我有一个c++头文件,其中包含一些c++代码调用的函数。这些函数应映射到相应的Java函数。 所以这有点像回调,但我无法弄清楚如何在JavaCpp中映射它们。

例如,我们有一个头文件:

#ifdef __cplusplus
extern "C" {
#endif
typedef void (*F_ADDDCALLBACK)(uint32_t arg1, uint32_t arg2, int8_t *arg3);
extern F_ADDDCALLBACK m_CB;
void F_RegisterCallbacks(F_ADDDCALLBACK cb);
void F_Init();
void F_SomeOtherFunction(uint32_t arg1, uint8_t *arg2);
#ifdef __cplusplus
}
#endif

当从某些c++代码调用这些函数时,它应该反过来调用一些java代码。 如何在JavaCpp中映射它?

首先创建一个 java 文件,您需要在其中定义自己的函数。 然后使用jdk附带javah实用程序生成c头文件。通过包含此头文件,您需要继续c代码。

有关详细信息,请参阅JNI(Java 本机接口)。

http://publib.boulder.ibm.com/infocenter/iseries/v5r4/index.jsp?topic=%2Frzaha%2Fjniex.htm

http://docs.oracle.com/javase/1.5.0/docs/guide/jni/spec/jniTOC.html