我已经安装了 Visual Studio 2010 并且有一个我从其他人那里得到的项目,我可以成功地构建它而不会出现任何错误。我得到一个 Wrapper.dll,我想使用 JNA 访问它。我正在使用 Win7 64 位。
但我收到错误:java.lang.UnsatisfiedLinkError: Unable to load library 'Wrapper': The specified module could not be found。
Wrapper.dll 当然在正确的文件夹中,它是一个 32 位的 dll,我的 Java 程序也使用 32 位的 JRE,所以这不是错误的原因。
我使用 DependencyWalker 检查是否缺少 *.dll:
- MSVCP80.DLL
- MSVCR80.DLL
- GPSVC.DLL
- IESHIMS.DLL
是的,有一些缺失。我可以断定该错误与这些 DLL 丢失有关吗?但是为什么 Visual Studio 编译正确并且不抛出错误呢?如何解决这个问题以便访问 Wrapper.dll 中的这些函数?
我还读到下载 dll 可能不是正确的做法!(我知道 Wrapper.dll 依赖于另一个在 Visual Studio 2005 中构建的 dll 或源代码,如果感兴趣的话。)
编辑:
我发现 Wrapper.dll 依赖于其他三个可能是基于 MSVS2005 构建的 dll。这些需要上面提到的DLL(用dependencywalker检查),我猜因此Wrapper.dll也链接它们。
那么我该怎么做才能摆脱这些旧的 dll 呢?我是否需要使用 VS2010 构建其他三个 DLL,或者这是一个总是会出现的问题,这意味着您需要复制粘贴旧 DLL 才能使用依赖于这些的预编译库。
有没有办法让程序也可以在任何其他系统上运行而无需复制粘贴这些 DLL?