关于使用JAVA调用c 或者c++的DLL的吐槽

来源:互联网 发布:ansys cfd软件 编辑:程序博客网 时间:2024/04/28 03:03

      关于使用JAVA调用c 或者c++的DLL的问题不是什么新鲜的话题,但是今天我还是吐槽一下,因为我也像各位前辈一样,你们被坑了,我也被坑了,很简单的转换花了我一天的时间,各种百度,感觉真是费了很大的劲才最终搞定! 吐槽是为了给自己的一个纪念,有一天也发现自己曾经被坑了,吐槽是为了给后人的一些参考,因为你们也有可能会被坑!

       首先关于这个问题,百度一下,能有很多很多的资料,而且大部分网友也是非常职业的,被坑了以后,把自己的步骤一步一步写的非常清楚,而且还分析了问题。

       所以这里我就不进行详细介绍了,给他们的链接,这几个链接我觉得不错,

http://blog.csdn.net/origin100/article/details/7305222

http://www.cnblogs.com/xiehy/p/3365682.html

http://blog.csdn.net/lcl_data/article/details/6913922

以上这几篇文章写得很好,至少对你解决这个问题会有很大的帮助!

 

         下面就简单讲一讲我遇到的问题

第一个问题

使用javah生成头文件   这个比较无语,稍不留神就报错,找不到类     这里提供一种方法   加入你的包是   com.bbb , 这里bbb是你的类,它存放在com的目录下,那么你可以到com的上一层使用javah命令,

即 javah  com.bbb,就能够生成该头文件了,其他网上的方法我都尝试了,都不太行得通,当然了,即使你跟我一样做了,你也不一定能够行的通,那么还有另一种更加稳妥的方法,那就是讲整个com文件夹复制到jdk的bin文件夹下面,然后用cmd命令执行  javah  com.bbb,这种应该没问题了,其实它的原因主要是跟你安装JAVA的时候的环境变量设置有关系

 

 

第二个问题

生成好了,没找到方法,我犯了一个错误,如下所示

一般来说 生成的头文件应该是这样JNIEXPORT jint JNICALL Java_java_13_Addlib_dll_1add(JNIEnv *, jobject, jint a, jint b)

前两个参数是默认就有的,如果你不需要,不要去动它,否则就会遇到我这个问题,比较傻,但是时间确实就是这么消耗掉了

 

 

 

 

 

0 0
原创粉丝点击