Note: Visual Studio 2008 SP1 (VCLIBs version 9.0.30729.6161) update

最近被叫去幫忙寫一個Windows 的Toolkit, 因為有裝Visual Studio 2008 作為開發 Windows Embedded Compact 7 的環境, 所以就懶的裝最新的 Visual Studio 2013, 想說裝個Windows SDK for Win 7(Windows SDK 6.0) 就好, 誰想到事情變得很複雜

首先我的Visual Studio 2008 因為開發WEC 7 的關係, 所以是有裝 Service pack 1 的, 然後寫出來的程式因為 M$ 未了解決 DLL Hell problem 引進了 manifest 機制去標註程式使用的 DLL/LIB 到底除了檔案名稱辨別外, 還可以標註版本/MachineType 等等, 但是VisualStudio 2008 SP1 後還因為Security update 的關係, Update 了很多次, 但是我發現很奇怪的是update 後 只更新了 src/redist 但是對應的 include/lib 都未必更新 (連結不正確時, 放到別台機器上執行會出現 Side by Side issues )

然後 build 的時候, 還要有defined _BIND_TO_CURRENT_VCLIBS_VERSION 才會用新的, 但是lib 沒更新的話, 他一樣會有錯誤的相依性輸出如下, 在Include 內已經是 9.0.30729.6161 但是link 到錯誤的libs 後又追加了 9.0.30729.1

    <dependentAssembly>
<assemblyIdentity type="win32″ name="Microsoft.VC90.DebugCRT" version="9.0.30729.6161″ processorArchitecture="amd64″ publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity>
</dependentAssembly>
</dependency>

<dependentAssembly>
<assemblyIdentity type="win32″ name="Microsoft.VC90.DebugCRT" version="9.0.30729.1″ processorArchitecture="amd64″ publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity>
</dependentAssembly>
</dependency>

查了一下 9.0.30729.6161 的 update 是 VS90SP1-KB2538241-x86.exe, 但是直接安裝可能會有問題 參考下面這篇

http://blogs.msmvps.com/vstsblog/2009/07/29/hotfix-kb-971092-for-visual-studio-2008-sp1-install-problems/
我直接把 .exe 用解壓縮軟體解開, 取出 VS90SP1-KB2538241-x86.msp 檔案
然後按照內文修改下面存取屬性

  • $(VCInstallDir)/Common7/Tools/vsvars32.bat
  • $(VCInstallDir)/bin/x86_amd64/vcvarsx86_amd64.bat (因為需要cross compiling x64版本, 有安裝才需要修改)
廣告

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

您的留言將使用 WordPress.com 帳號。 登出 / 變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 / 變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 / 變更 )

Google+ photo

您的留言將使用 Google+ 帳號。 登出 / 變更 )

連結到 %s

%d 位部落客按了讚: