Visual C ++ Redistributable Package中缺少哪些Windows库?

时间:2013-05-21 18:58:11

标签: visual-c++ java-native-interface redistributable

我正在使用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本身包含许多标题,但我想其他标准会使问题更加具体。)

1 个答案:

答案 0 :(得分:0)

首先猜测:您正在安装发布版本的调试版本。调试版本取决于CRT的调试版本,无法重新分发。

检查您使用的是“Microsoft Visual C ++ Redistributable Package”。有2012年,2012年更新1和2012年更新2(以及2010年,2008年,......)。

假设您的依赖项是加载时DLL,您可以使用Depends找出缺少的内容。 (注意:您通常会看到一些“丢失”的延迟加载DLL。忽略这些;请参阅常见问题解答。)

当然,一旦找到丢失的DLL的名称和路径,就必须找出redist包安装它的位置。