Linux平台下使用JNI(C动态链接库)的一点经验
2012-11-08 17:28
323 查看
Java支持数据的位操作方面很糟糕。
如果linux上有Java程序要实现位操作功能,方便的办法有调用C编写的动态链接库。
IBM文档链接:
在 Linux 平台下使用 JNI
http://www.ibm.com/developerworks/cn/java/l-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
http://www.cprogramming.com/tutorial/shared-libraries-linux-gcc.html
如果linux上有Java程序要实现位操作功能,方便的办法有调用C编写的动态链接库。
IBM文档链接:
在 Linux 平台下使用 JNI
http://www.ibm.com/developerworks/cn/java/l-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
http://www.cprogramming.com/tutorial/shared-libraries-linux-gcc.html
相关文章推荐
- Linux平台使用JNI的例子 Java调用so
- Linux平台Java调用so库-JNI使用例子
- Linux平台使用JNI的例子 Java调用so
- 在 Linux 平台下使用 JNI
- 在 Linux 平台下使用 JNI
- linux上使用eclipse开发Jni个人经验记录
- 在 Linux 平台下使用 JNI
- 在Linux平台下使用JNI
- 转载:JNI 编写动态链接库 HelloNative 详细过程(也即用Java和C在Linux下动态生成并使用so文件过程)
- JNI 编写动态链接库 HelloNative 详细过程(也即用Java和C在Linux下动态生成并使用so文件过程)
- Linux平台Java调用so库-JNI使用例子
- 利用IDEA进行JNI开发:使用NDK生成Linux平台下的so文件
- Linux平台Java调用so库-JNI使用例子
- Linux平台Java调用so库-JNI使用例子
- linux下 java JNI调用C语言动态链接库(非常使用!!非常经典!!)
- Linux平台下使用JNI
- Linux平台Java调用so库-JNI使用例子
- Linux平台静态接库与动态链接库的创建和使用
- linux下使用oracle和weblogic的一点经验
- 在 Linux 平台下使用 JNI