我想加载第三方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).
由于Visual C运行时DLL的依赖性问题,无法加载DLL
系统上存在的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的机器的问题的确切版本仍然没有解决它。是什么赋予了?
您的应用程序目录 如果您的应用程序创建一个安装程序,然后(取决于我你使用的nstaller创建工具),它应该自动引入合适的dll或使用正确的合并模块。这通常比手动复制dll更容易出错,这可能与Windows SxS(并行)安装冲突。 另一种替代方法是静态链接运行时,尽管这可能并不总是实用。 – 2009-11-24 22:41:03
谢谢,这实际上可能是比我更正确的答案。我将研究与我的安装系统一起打包合并模块的过程。到目前为止,该软件已被xcopy部署,这在一些配置中很不错。 – Jason 2009-11-25 20:45:20