51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

Windows端的java程序使用jni调用C++编写的库

Windows端的java程序使用jni调用C++编写的库,原来实现过在Android和Linux端通过JNI调用C++程序,在Windows端没有实现过,这里记录下几个关键的点;


1、64位的dll工程,现在少有32位的平台,所以需要通过VisualStudio编译出64位的dll,注意属性页->C/C++->代码生成/运行库/选择多线程调试(/MTd),参考Linux编译选项的静态链接和动态链接的思路就比较好理解了:


静态链接:多线程(/MT)、多线程调试(/MTd)

动态链接:多线程DLL(/MD)、多线程调试DLL(/MDd)

动态链接为D,静态链接为T。两者的区别在于,静态链接将程序所依赖的运行库集成到了可执行文件中,可执行文件运行时不再需要运行库;动态链接没有把程序所依赖的运行库集成到可执行文件中,可执行文件运行时需要运行库。


推荐选择/MTd, 这样Java程序就不需要重复链接一些依赖的三方库,或者自己写的静态库;我们实现的场景就是通过一个dll工程封装多个lib库的工程;


2、注意Eclipse工程搜索路径的建立:参考https://blog.csdn.net/pxhero2012/article/details/52926082

呱牛笔记





赞(1)
未经允许不得转载:工具盒子 » Windows端的java程序使用jni调用C++编写的库