原创 后端技术 java调用第三方64位so库 第三方给了so文件和一个.c和.h调用例子,还有一个.a的库但是通过nm查看so的方法,发现想要调用的方法返回值是void,返回值是定义在入参中的(不懂c语言),于是只能通过生成一个中间库的方式去调用第三方库,然后通过中间库暴露有返回值的方法供jna调用通过nm命令查看so的方法nmXXX.so其中为U的方法是未被定义的,不可以直接调用1.编译中间库给..._clibrary.class.getresource 2022-10-12 浏览(136) 评论(0) 阅读全文
原创 后端技术 调用没有源代码的dll文件 当使用jni或者jna调用dll的时候,如果dll是加密的话,并且没有源文件,也没有.h头文件而且不知道方法的定义就很难直接调用了,需要通过c语言生成一个中间库,在中间库中调用给的dll首先需要在java中定义好要调用的方法,然后编译成class,然后通过javah生成一个.h头文件,一般如下标红处就是对应我们的java方法然后根据生成的.h头文件编写方法..._没有h文件调式dll 2022-09-17 浏览(110) 评论(0) 阅读全文
原创 后端技术 java调用第三方so或者dll常见错误整理 1.关于LINK:fatalerrorLNK1561:必须定义入口点的解决方法每个应用程序(文件格式为exe)都应该有个启动点,这个点就是main函数。缺少就会出现linkerror。解决方法有21.添加含有main函数的CPP文件2右击属性,在常规项中修改配置类型,将应用程序修改为库,动静态库2.Cannotopenincludefile:j..._java禁止加载外部so 2022-09-11 浏览(138) 评论(0) 阅读全文
原创 后端技术 java使用jni调用第三方dll 首先需要判断dll是32位还是64位,对应的jdk也必须是32或64位然后需要知道dll中声明开放的方法和参数返回值1.jna方式调用引入依赖代码很简单要能调用需要依赖dll的.h头文件的声明,一般声明类似如下/*DONOTEDITTHISFILE-itismachinegenerated*/#include&..._java调用依赖三方库的dll 2022-09-09 浏览(145) 评论(0) 阅读全文