2013-05-12 46 views
0

注:下投票或類似的東西在此之前,這是一個普遍的問題,以瞭解更多的東西是怎麼回事C++ 11程序可以在任何CPU上工作嗎?

的問題簡單地說就是: 假設我編譯的程序用C++ 11個功能(使用VS2012在Windows )是否有保證這個程序可以在較舊的處理器上運行?(如core 2 duo;因爲大多數筆記本電腦都是這樣的)

我目前正在使用VS2010,但發現需要C++ 11功能的庫。 所以我想將整個工作VS2012,但我的知識是有限的關於這個問題的任何工作如何會

正確的錯誤

編輯: 另外2個問題:

1 - 能我「混合」一個編譯的C++ 11程序與舊的?

就像調用它是從舊版本文件(.exe),因此新版本的文件(.dll)函數內我得到了2個文件:

1編譯與VS2010另1編譯與VS2012,與DLL出口可以像那樣工作嗎?

2 -suggest比VS2012一個更好的環境爲Windows

+2

這不是一個語言問題。這取決於編譯器的目標是什麼。 – stark 2013-05-12 01:45:33

+2

在您剛剛開始之前,請確保VS已經實現了您要移植的功能。 VS比其他人保守得多,或者可能只是比較慢,並沒有一切可用的東西。請參閱[this](http://msdn.microsoft.com/zh-cn/library/vstudio/hh567368.aspx)。 – ChiefTwoPencils 2013-05-12 01:52:17

+0

非常感謝您的幫助,請檢查編輯:) – 2013-05-12 02:00:42

回答

1

是,編譯器需要額外的庫來構建程序。但是這不應該影響在舊處理器上運行的能力。唯一一次改變是當你試圖在32位處理器上運行一個64位程序時。

移植到VS2012很簡單,在VS2012中打開解決方案,並將其另存爲vs2012解決方案。它應該都很好。

編輯:機率是,如果你是新手編程,默認情況下你的所有程序都是爲32位處理器編譯的,除非你編碼改變這個,所以你不必擔心。您可以在64位處理器上運行32位程序,而不是相反。如果你真的想把它提升一下,你可以製作一個可以在兩個處理器上運行的程序;)

1

只要構建目標的體系結構相同(x86爲32位或64位爲amd64) )你不應該有任何問題。

當然,您需要爲舊機器提供正確的運行時庫來運行程序(針對當前體系結構)。

+0

儘管它特定於C++ 11,但在x86中當然存在差異,需要注意。例如,'cmov'支持。 – icktoofay 2013-05-12 02:09:42

0

給出一個編譯的可執行文件通常要求運行它是:

  • ABI
  • 平臺

又因爲微軟是一個商業產品,這取決於你是什麼你可以添加另一個因子

  • 環境

這意味着有時軟件公司有意破壞與其他產品的兼容性以銷售更多東西。

一般來說VS並不是那麼好,當然它不是最好的編譯器我基本上從GCC到Clang到MinGW都可以很容易地取代VS,但VS是Windows的官方編譯器和環境,所以這是大部分時間你必須處理的事情。

如果您已經達到了上述要求,那麼您就很好。

順便說一句Core 2 Duo,它不是那麼古老,而實際的iCore一代也沒有那麼不同。

相關問題