如何在.dll和.so中使用JNA与相同的回调签名
发布时间:2021-01-13 20:42:53 所属栏目:Linux 来源:网络整理
导读:我正在研究一个在Windows和Linux上运行的java项目,我正在使用第三方共享库,这两个操作系统可以使用相同的方法签名.但是,dll的调用约定是stdcall,而共享对象是cdecl. 我想避免重复回调代码,两个接口和两个类,每个调用约定一个接口.我想为回调函数编写一个代
我正在研究一个在Windows和Linux上运行的java项目,我正在使用第三方共享库,这两个操作系统可以使用相同的方法签名.但是,dll的调用约定是stdcall,而共享对象是cdecl. 我想避免重复回调代码,两个接口和两个类,每个调用约定一个接口.我想为回调函数编写一个代码.那可能吗? 在linux下访问.so的代码中唯一的变化是接口.回调函数代码本身是相同的.我会感激任何消化.
这是我为dll中的回调编写的代码:
谢谢, 费尔南多 最佳答案 您可以使用StdCallLibrary / StdCallCallback声明它们,但可能无法在所有平台上定义行为.在不支持备用调用约定的平台上忽略该选项(此时除了win32之外的所有内容),但未必在所有平台上进行测试.这是首选定义,它仅为windows定义stdcall库.
如果你只是针对linux和windows,那么单个界面就足够了(不过我建议测试一下):
(编辑:应用网_镇江站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- CentOS5.8/6.4系统安装后的基础优化
- 乐视超4 Max70价格是多少 超4 max70 3D版和2D版报价
- 怎样优雅的将Docker Registry中容器镜像迁移至Harbor
- 怎样在Ubuntu中删除仓库及其GPG密钥
- linux 忘记root密码又忘记grub密码怎么办
- 冰箱低于1万得扔?少年,我劝你稳住钱袋先看完!
- 除了root之外的所有内容的Apache mod_rewrite
- Linux下创建、删除和修改逻辑卷LVM的详细配置 - Linux系统
- [Linux]Linux下安装和配置solr/tomcat/IK分词器 详细实例一
- 转载--linux filesystem structures
站长推荐