我已使用Visual Studio 2017社区构建工具构建了Mecab.dll,并能够使用JNI在Java中加载。当我将DLL复制到其他计算机并尝试在Java中加载时,它确实可以工作。
Dependency Walker显示它使用了Visual Studio Build Tools中的某些DLL文件,该文件在另一台计算机上不可用,因为它不是开发机器。
如何构建DLL,以便无需安装Visual Studio / Build Tools就可以在任何其他计算机上使用它?我来自Java背景,不知道如何执行此操作?有人可以帮忙吗?
最佳答案
我发现Dependency Walker经常会给人带来麻烦。您还没有给我们足够的帮助,但是我将提供一些可以帮助您的理论:
尝试安装Visual Studio redist packages
您已将DLL构建为“调试”构建。由于没有安装支持的DLL,因此通常无法移植到不具有相同Visual Studio版本的系统。
您复制的DLL不可信。查看文件是否被阻止,如果被阻止,unblock it
您没有进行正确的System.load()或System.loadLibrary()调用来在其复制位置找到DLL。不幸的是,这些方法可以报告成功,但仍然无法访问您的本机方法。
您尚未将DLL放入PATH。
希望其中之一能使您摆脱困境。如果没有,请发布您的错误堆栈跟踪和消息,以便我们为您提供帮助。