Linux平台下使用JNI(C动态链接库)的一点经验

本文介绍在Linux环境下如何利用C++动态链接库解决Java位操作难题,并分享了在编写动态链接库过程中遇到的一些常见问题及解决方案。
Java支持数据的位操作方面很糟糕。
如果linux上有Java程序要实现位操作功能,方便的办法有调用C编写的动态链接库。

IBM文档链接:
在 Linux 平台下使用 JNI

编写C++动态链接库遇到过的问题:
1. 有的外设使用Unicode 而不是ASCII码:在常量字符串前添加“L";
2. 多种数据类型之间的转换,比如jByteArray, jbyte*, CString, char *:为了避免麻烦,我舍弃使用CString类型,全部都用char型数组配合memset(charr, '\0', sizeof( charr));  memcpy(destarr, srcarr, num); 这样的函数解决;
3. 动态链接库无法直接运行,调试困难:可以在动态库里写printf语句,java程序调用动态库时会打印出来。

一个非常好的讲linux下编译、使用动态链接库的参考:
Shared libraries with GCC on Linux
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值