首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将指针映射到UInt64

将指针映射到UInt64
EN

Stack Overflow用户
提问于 2021-10-06 10:50:49
回答 1查看 100关注 0票数 0

我们使用jniwrapper从JAVA与第三方DLL进行通信。动态链接库希望我们将指针作为uint64_t传递给回调函数。

代码语言:javascript
复制
typedef struct random_struct { 
...
uint64_t callback;  //!< A function pointer to the callback
..
}

所以在jniwrapper中,我尝试使用Void、Pointer等从Java进行映射,但这些都不起作用。DLL报告回调设置无效。所以我的问题是如何将回调作为uint64_t进行通信,有没有人使用Jniwrapper来满足这样的需求呢?谢谢

EN

回答 1

Stack Overflow用户

发布于 2021-10-07 06:31:44

一个合适的回调函数应该是:

代码语言:javascript
复制
[returnType] (*[nameOftheFunctionPtr])([parameters...]);

示例:

代码语言:javascript
复制
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

}

您可以使用以下函数,该函数将被分配给回调函数:

代码语言:javascript
复制
uint8_t ucReadFromBuffer(uint8_t* const buffer, uint8_t length){

// do stuff ...
// return uint8_t variable

}

然后你可以在你的代码中分配它:

代码语言:javascript
复制
random_struct myStruct = {.callback = ucReadFromBuffer};

// and if you want to call it
myStruct.callback(someBuffer, length);
// similar to
ucReadFromBuffer(someBuffer, length);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69464342

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档