如何解决java调dll报Unable to load library的错误
2个回答
展开全部
主要是因为你的dll没有搜索到,你把这个dll放到java程序编译后.class文件存放的当前目录,或者PATH环境变量里能搜索到的路径里才行。
当前类(注意是.class文件的存放位置)的运行路径可以这样获取:
System.out.println(Class.class.getClass().getResource("/").getPath());
你打印一下,然后看看这个路径下有没有你的dll。
再或者,你的dll在载入时就用绝对路径也可。
还不行?最后一招:把dll放到windows/system32目录下试试。
当前类(注意是.class文件的存放位置)的运行路径可以这样获取:
System.out.println(Class.class.getClass().getResource("/").getPath());
你打印一下,然后看看这个路径下有没有你的dll。
再或者,你的dll在载入时就用绝对路径也可。
还不行?最后一招:把dll放到windows/system32目录下试试。
2016-04-10 · 做真实的自己 用良心做教育
千锋教育
千锋教育专注HTML5大前端、JavaEE、Python、人工智能、UI&UE、云计算、全栈软件测试、大数据、物联网+嵌入式、Unity游戏开发、网络安全、互联网营销、Go语言等培训教育。
向TA提问
关注
展开全部
载入库文件有两个函数System.load和System.loadLibrary。
当使用System.load时,需要输入文件的全路径,例如:System.load(“/tmp/test.so”);
当使用System.loadlibrary时是在系统的library的目录中需找复合条件的库文件,可以使用
-Djava.library.path=[path]参数,来指定Java程序加载库文件的路径,或者将库文件(
*.so,*.dll)复制到include的默认路径,Linux一般是/usr/lib目录下,当然你可以编辑/etc/ld.so.conf.d/下的文件,设定自己的库查找路径ldconfig -v|grep xxx看看有没有你的动态库。
Linux还要注意,使用System.loadLibrary(name)方法其中参数内容与Windows有区别,
Linux中的的库文件名为libname.so,.dll。
在Windows中尽量使用Windows的C/C++编译器生成dll文件,否则会出现问题。
当使用System.load时,需要输入文件的全路径,例如:System.load(“/tmp/test.so”);
当使用System.loadlibrary时是在系统的library的目录中需找复合条件的库文件,可以使用
-Djava.library.path=[path]参数,来指定Java程序加载库文件的路径,或者将库文件(
*.so,*.dll)复制到include的默认路径,Linux一般是/usr/lib目录下,当然你可以编辑/etc/ld.so.conf.d/下的文件,设定自己的库查找路径ldconfig -v|grep xxx看看有没有你的动态库。
Linux还要注意,使用System.loadLibrary(name)方法其中参数内容与Windows有区别,
Linux中的的库文件名为libname.so,.dll。
在Windows中尽量使用Windows的C/C++编译器生成dll文件,否则会出现问题。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |