我们使用jniwrapper从JAVA与第三方DLL进行通信。动态链接库希望我们将指针作为uint64_t传递给回调函数。
typedef struct random_struct {
...
uint64_t callback; //!< A function pointer to the callback
..
}所以在jniwrapper中,我尝试使用Void、Pointer等从Java进行映射,但这些都不起作用。DLL报告回调设置无效。所以我的问题是如何将回调作为uint64_t进行通信,有没有人使用Jniwrapper来满足这样的需求呢?谢谢
发布于 2021-10-07 06:31:44
一个合适的回调函数应该是:
[returnType] (*[nameOftheFunctionPtr])([parameters...]);示例:
typedef uint8_t (*dataReader_t)(uint8_t* const buffer, uint8_t length);
typedef struct random_struct {
dataReader_t callback; //!< A function pointer to the callback
}您可以使用以下函数,该函数将被分配给回调函数:
uint8_t ucReadFromBuffer(uint8_t* const buffer, uint8_t length){
// do stuff ...
// return uint8_t variable
}然后你可以在你的代码中分配它:
random_struct myStruct = {.callback = ucReadFromBuffer};
// and if you want to call it
myStruct.callback(someBuffer, length);
// similar to
ucReadFromBuffer(someBuffer, length);https://stackoverflow.com/questions/69464342
复制相似问题