复制到其他计算机时无法加载DLL

时间:2018-12-25 08:53:30

标签: java windows dll java-native-interface

我已经使用 Visual Studio 2017社区构建工具构建了Mecab.dll,并且能够使用JNI在Java中加载。当我将DLL复制到其他计算机并尝试在Java中加载时,它确实可以工作。

Dependency Walker显示它使用了 Visual Studio构建工具中的某些DLL文件,该文件在另一台计算机上不可用,因为它不是开发机器。

enter image description here

如何构建DLL,以便可以在任何其他计算机上使用它而无需安装Visual Studio / Build Tools?我来自Java背景,不知道如何执行此操作?有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

我发现Dependency Walker经常发出红色鲱鱼。您还没有给我们足够的帮助,但是我将提供一些可能对您有所帮助的理论:

  • 尝试安装Visual Studio redist packages
  • 您已将DLL构建为“调试”构建。由于没有安装支持的DLL,因此通常无法移植到不具有相同Visual Studio版本的系统。
  • 您复制的DLL不可信。查看文件是否被阻止,如果被阻止,unblock it
  • 您没有进行正确的System.load()或System.loadLibrary()调用来在其复制位置查找DLL。不幸的是,这些方法可以报告成功,但仍然无法访问您的本机方法。
  • 您尚未将DLL放入PATH。

希望其中之一能使您摆脱困境。如果没有,请发布您的错误堆栈跟踪和消息,以便我们为您提供帮助。