由于Visual C运行时DLL的依赖性问题,无法加载DLL

时间:2009-11-24 19:44:53

标签: visual-studio dll

我正在尝试加载第三方DLL,但在尝试加载时遇到错误。在Dependency Walker中打开它表明DLL只依赖于kernel32.dll和msvcr90.dll。但是,打开此DLL时,我在Dependency Walker中收到以下错误:Error The Side-by-Side configuration information for [full path to the dll that I am loading] contains errors. This application has failed to start because the application configuration is incorrect. Reinstalling the application may fix this problem (14001).

系统上存在的唯一msvcr90.dll副本是我复制到包含第三方DLL的目录中的副本。我在另一台机器上遇到了一个非常类似的问题,安装了Microsoft的Visual C ++ 2008 Redistributable软件包修复了它。但是,我真的需要深究这一点,因为我无法在我需要运行的所有机器上安装可再发行软件包。

我还尝试在Visual Studio中打开第三方DLL并检查其清单。在其中我可以看到它明确依赖于Visual C运行时库的SP0版本:

<assemblyIdentity type="win32" name="Microsoft.VC90.CRT" version="9.0.21022.8" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity>

但是,将该确切版本的DLL复制到具有该问题的计算机仍然无法解决问题。是什么给了什么?

1 个答案:

答案 0 :(得分:2)

好的,我明白了。我必须包含Microsoft.VC90.CRT.manifest文件的副本。通常,您可以从[Visual Studio 9.0安装目录] \ VC \ redist \ x86 \ Microsoft.VC90.CRT目录中获取此信息。但是,我安装了Visual Studio的SP1,这些文件的版本略有不同。我最终从MS的可再发行组件中提取了相应的文件。显然,如果我有另一个第三方DLL依赖于不同版本的msvcr90.dll我会遇到麻烦。我想这就是为什么微软开始创建并排的东西。

简而言之(对于未来任何潜在的Google员工),您有两种选择:

  • 安装Visual C ++ 2008 可再发行组件包(仅限Google 那个词,你会发现它)
  • 或手动复制必要的DLL 到您的应用程序目录 包括.manifest文件