我想加載第三方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