我在eclipse建立了一个 dynamic web project,里面用jna调用我用C写的dll,但是提示找不到dll,还请高手帮我看看问题在哪,谢了!

时间:2021-11-09 15:57:31
SEVERE: Exception starting filter LoadIndex
java.lang.UnsatisfiedLinkError: Unable to load library 'PatentRetrieve': 找不到指定的模块。

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 patent.filter.LoadIndexFilter$PatentRetrieve.<clinit>(LoadIndexFilter.java:23)
at patent.filter.LoadIndexFilter.init(LoadIndexFilter.java:49)
at org.apache.catalina.core.ApplicationFilterConfig.initFilter(ApplicationFilterConfig.java:281)
at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:262)
at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:107)
at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4746)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5399)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549)
at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
at java.util.concurrent.FutureTask.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)

3 个解决方案

#1


先直接main函数测试调用dll吧。

这个错很有可能是你的dll的依赖库没有

#2


使用procexp跟踪他调用的哪个路径,,或者吧dll放到windows目录里。。或者放到path变量里。

#3


原因找到了,一个网友告诉我,DLL中定义的函数 void  test();
实际中,是 void  _test();  要加下划线; 果然在JAVA中,不再有出错,
忙了整一天。

#1


先直接main函数测试调用dll吧。

这个错很有可能是你的dll的依赖库没有

#2


使用procexp跟踪他调用的哪个路径,,或者吧dll放到windows目录里。。或者放到path变量里。

#3


原因找到了,一个网友告诉我,DLL中定义的函数 void  test();
实际中,是 void  _test();  要加下划线; 果然在JAVA中,不再有出错,
忙了整一天。