我正在使用 JNI 连接到我使用 MSVC++ 2012 编写的 CAN 驱动程序。一切都编译并运行良好 - 但仅在我的计算机上。每当我尝试在任何其他计算机上运行时,我都会收到 JNI “UnsatisfiedLinkError” - 找不到依赖库。我以前实现过 JNI,通常只需在运行我的程序之前安装 Microsoft Visual C++ Redistributable Package 即可解决此问题。Redistributable 并没有解决我的问题,但是,在有问题的计算机上安装整个 MSVC++ Express 2012 IDE 似乎可以让一切正常。因此,我假设这意味着在安装 IDE 时会安装一些依赖项并将其添加到 PATH 中,但在安装 Redistributable 时不会。只是为了验证,我卸载了 IDE,我的 JNI 驱动程序再次加载失败。这与我的其他 JNI 实现之间的主要区别在于我使用 Windows.h,因为它是我在驱动程序中使用的 CAN API 所必需的。关于随 IDE 而不是 Redistributable 以及其原型包含在 Windows.h 中的任何库的任何想法?(注意:我知道 Windows.h 本身包含许多标头,但我想其他标准会使问题更加具体。)
问问题
534 次
1 回答
0
第一个猜测:您正在安装调试版本而不是发布版本。调试版本取决于无法重新分发的 CRT 的调试版本。
检查您是否使用了正确的“Microsoft Visual C++ Redistributable Package”。有 2012、2012 Update 1 和 2012 Update 2(以及 2010、2008 等多个版本)。
假设您的依赖项是加载时 DLL,您可以使用Depends找出缺少的内容。(注意:您通常会看到一些“丢失”的延迟加载 DLL。忽略这些;请参阅常见问题解答。)
当然,一旦你找到了丢失的 DLL 的名称和路径,你就必须找出安装它的 redist 包。
于 2013-05-21T20:45:44.120 回答