开发者社区> 问答> 正文

关于java中JNA调用c++ dll文件失败问题?报错

关于java中JNA调用c++ dll文件失败问题

现在目前使用的是 4.0的jar和3.5.1的 两个版本都不可以。

问题描述:

我把c++写好的dll文件放到 当前项目下,然后使用一下代码调用。

package net.cc.tools;

import com.sun.jna.Library;
import com.sun.jna.Native;

public class addTestServer {

	public interface addTest extends Library {

		addTest INSTANCE = (addTest) Native.loadLibrary("addTest.dll",
				addTest.class);

		int add(Integer a, Integer b);
	}

	public static void main(String[] args) {

		addTestServer.addTest.INSTANCE.add(Integer.valueOf(1),
				Integer.valueOf(2));
	}
}


现在每次执行  都是报错。。

错误描述:

Exception in thread "main" java.lang.UnsatisfiedLinkError: Unable to load library 'addTest.dll': dlopen(libaddTest.dll.dylib, 9): image not found
	at com.sun.jna.NativeLibrary.loadLibrary(NativeLibrary.java:194)
	at com.sun.jna.NativeLibrary.getInstance(NativeLibrary.java:283)
	at com.sun.jna.Library$Handler.<init>(Library.java:142)
	at com.sun.jna.Native.loadLibrary(Native.java:368)
	at com.sun.jna.Native.loadLibrary(Native.java:353)
	at net.cc.tools.addTestServer$addTest.<clinit>(addTestServer.java:10)
	at net.cc.tools.addTestServer.main(addTestServer.java:18)

实在是看不出来,,小伙伴 看看是什么情况?

谢谢了。。。。

展开
收起
爱吃鱼的程序员 2020-06-22 14:47:24 1127 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    是否dll中使用到外部资源呢?要用到两个jar包,jna.jar和jna-platform.jar,都加进去了吗? loadlibrary的时候用绝对路径试试,明显库load失败嘛<divclass="ref">

    引用来自“rouyh”的答案

    <divclass=ref_body>是否dll中使用到外部资源呢?<divclass="ref">

    引用来自“GotaX”的答案

    <divclass=ref_body>要用到两个jar包,jna.jar和 jna-platform.jar,都加进去了吗?  <divclass="ref">

    引用来自“Brantz”的答案

    <divclass=ref_body>loadlibrary的时候用绝对路径试试,明显库load失败嘛小伙伴,是你文件位置不对吧。放到你代码同级目录下试试,然后放classpath,然后用绝对路径要带.dll后缀么?imagenotfound放的位置不对

    2020-06-22 14:47:40
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
The Reactive Cloud Native Arch 立即下载
JAVA开发手册1.5.0 立即下载