一些CRT的 Background
- Visual C++ compile 時link 的 C runtime library 位置
- C:\Program Files (x86)\Microsoft Visual Studio 8\VC\redist\x86\Microsoft.VC80.CRT
- Windows update 時除了update OS本身之外, 會順便update microsoft出的 application(VC++). 所以也會 update 你的C runtime library.
- 查目前被update到那一個版本
- C:\Program Files (x86)\Microsoft Visual Studio 8\VC\redist\x86\Microsoft.VC80.CRT\Microsoft.VC80.CRT.manifest
- link 的rule
- 有裝VC的host 會link VC底下的
- 沒有裝VC的host 執行 exe call到CRT 時 link c:\Windows\winsxs 底下的 library (SXS就是side by side的縮寫)
- Download vcredist_x86
- 從 Microsoft download Center 用 Microsoft Visual C++ 2005 Redistributable Package 來找
所以如果HOST OS 的VC有被update 過 而guest OS裡的CRT沒有被update到 直接copy host的exe到guest就會出現side by side error
解法: 再裝library 到guest OS 中 (網路上找到的名字通常會是 vcredist_x86.exe 這種名字, 就是在裝library 到你的winsxs, 下載參考上面background)
如何找相對應的vcredist_x86 or x64.xe
方法一.首先先用你需要的CRT version 比如 8.0.50727.4053 在 windows support 找到KB文章 和資訊安全佈告欄link 或number 如MS09-035 裡面有這個更新的內容和應該下載的點 如果沒有link 而只有number就用number 找technet 如用 MS09-035的找到的link
方法二. 也可以在找到KB文章之後 捲到最後keyword找到KB number再用kb number到download center 找相對應的下載
沒有留言:
張貼留言