我正在使用JNI来连接我用MSVC++ 2012编写的CAN驱动程序。一切都能正常编译和运行--但只能在我的电脑上运行。每当我尝试在任何其他计算机上运行时,我都会得到JNI "UnsatisfiedLinkError“-找不到依赖库。我以前实现过JNI,通常在运行我的程序之前,只需安装Microsoft Visual C++ Redistributable包就可以解决这个问题。可再发行版并没有解决我的问题,然而,在有问题的电脑上安装整个MSVC++ Express2012IDE似乎可以让一切正常工作。因此,我假设这意味着在安装IDE时会安装一些依赖项并将其添加到PATH中,但在安装可再发行组件时不会。为了验证,我卸载了IDE,并且我的JNI驱动程序再次加载失败。这与我的其他JNI实现之间的主要区别是,我使用Windows.h,因为我在驱动程序中使用的CAN API需要它。对于任何与IDE一起安装的库,但不是可再发行的库,以及Windows.h中包含的原型,您有什么想法吗?(注意:我知道Windows.h本身包含许多标头,但我认为其他标准会使问题更加具体。)
发布于 2013-05-22 04:45:44
第一个猜测:您正在安装一个包含发布版本的调试版本。调试版本取决于CRT的调试版本,这些版本不能被重新分发。
检查您是否使用了正确的"Microsoft Visual C++ Redistributable Package“。有2012,2012更新1和2012更新2(还有许多2010,2008,...)。
假设您的依赖项是加载时DLL,您可以使用Depends找出缺少的内容。(注意:您通常会看到一些“缺失”的延迟加载‘ll。忽略这些;请参阅常见问题解答。)
当然,一旦您找出了丢失的DLL的名称和路径,您就必须找出哪个redist包安装了它。
https://stackoverflow.com/questions/16677489
复制相似问题