軟件包類型(x86或x64)是否依賴於我的應用程序類型或它所安裝的操作系統類型?要選擇哪種VC++可重新分發包(x86或x64)?
也就是說,如果我開發一個32位應用程序,我需要
- 部署在x86包只或
- 同時部署軟件包和上安裝32位Windows x86和x64 64位視窗?
回答這個問題32-bit VC++ redistributable on 64 bit OS?表明,這僅僅是86包,所以這將取決於我的應用程序,但它並沒有給任何解釋/鏈接。 MS的下載網站也沒有具體說明。
軟件包類型(x86或x64)是否依賴於我的應用程序類型或它所安裝的操作系統類型?要選擇哪種VC++可重新分發包(x86或x64)?
也就是說,如果我開發一個32位應用程序,我需要
回答這個問題32-bit VC++ redistributable on 64 bit OS?表明,這僅僅是86包,所以這將取決於我的應用程序,但它並沒有給任何解釋/鏈接。 MS的下載網站也沒有具體說明。
編譯時,所有標準庫的使用都會創建必須在鏈接時解析的引用。鏈接器在導入庫中烘焙匹配的運行時DLL,在加載時必須完全匹配。這意味着匹配編譯器版本,Service Pack和位數。
還要記住一個32位進程無法加載64位DLL。由於64位redist僅包含64位DLL,因此加載32位可執行文件時沒有任何幫助。
如果您需要最大限度發揮64位操作系統的潛力,則它取決於應用程序,因此您可以同時部署這兩者以處理64位和32位處理。但是,如果您的應用程序未超出32位的限制,則可以僅在x86上部署應用程序,無論如何它還應該通過32位虛擬化在64位操作系統上工作。
我認爲這是錯誤的:爲了最大限度地發揮64位操作系統的潛力,我需要將其編譯爲64位應用程序。 問題是:如果我決定編譯32位應用程序,我需要64位操作系統上的x64可再發行組件嗎? – 2012-01-31 07:07:19
不是真的。您可以使用32位可再發行組件,因爲目標應用程序部署是32位的,您只需要爲32位處理器設計的機器指令。 – 2012-01-31 12:57:15
可再分發軟件包未安裝以支持您的操作系統,它們已安裝以支持您的應用程序。 – 2012-01-30 16:53:40
...並且必須選擇與您的編譯器匹配。 – 2012-01-30 16:58:07
@Ben:當然,對於Visual Studio 2008,我將部署2008年的可再發行版 AndréCaron:你有這方面的資源嗎? – 2012-01-31 06:59:40