![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
jni相关
御影年华
早早的懂事,迟迟的成熟。
展开
-
java调用第三方64位so库
第三方给了so文件和一个.c和.h调用例子,还有一个.a的库但是通过nm查看so的方法,发现想要调用的方法返回值是void ,返回值是定义在入参中的(不懂c语言),于是只能通过生成一个中间库的方式去调用第三方库,然后通过中间库暴露有返回值的方法供jna调用通过nm命令查看so的方法nm XXX.so其中为 U 的方法是未被定义的,不可以直接调用1. 编译中间库给...原创 2020-03-14 16:54:21 · 778 阅读 · 0 评论 -
调用没有源代码的dll文件
当使用jni或者jna调用dll的时候,如果dll是加密的话,并且没有源文件,也没有.h头文件而且不知道方法的定义就很难直接调用了,需要通过c语言生成一个中间库,在中间库中调用给的dll首先需要在java中定义好要调用的方法,然后编译成class,然后通过javah生成一个.h头文件,一般如下标红处就是对应我们的java方法然后根据生成的.h头文件编写方法...原创 2020-03-14 16:50:11 · 448 阅读 · 0 评论 -
java调用第三方so或者dll常见错误整理
1.关于 LINK : fatal error LNK1561: 必须定义入口点 的解决方法每个应用程序(文件格式为exe)都应该有个启动点,这个点就是main函数。缺少就会出现link error 。解决方法有21.添加含有main函数的CPP文件2 右击属性,在常规项中修改配置类型,将应用程序修改为库,动静态库2.Cannot open include file: j...原创 2020-03-14 16:44:47 · 1619 阅读 · 0 评论 -
java使用jni调用第三方dll
首先需要判断dll是32位还是64位, 对应的jdk也必须是32或64位然后需要知道 dll中声明开放的方法和参数返回值1. jna方式调用引入依赖代码很简单要能调用需要依赖dll 的.h头文件的声明,一般声明类似如下/* DO NOT EDIT THIS FILE - it is machine generated */#include &...原创 2020-03-14 16:38:41 · 844 阅读 · 0 评论