2010-01-20 158 views
3

我有Windows應用程序生成使用Visual C++。它正在構建和運行在32位窗口env。現在我需要確保它在Windows Vista/7 64位環境下工作。我需要考慮這個移植過程的所有事情?從32位移植到64位

+2

你有將它移植到64位的還是你必須確保它適用於64位操作系統? – 2010-01-20 08:13:02

+0

@Nikola,準確地說,我需要確保它可以在64位操作系統上運行。 – Unicorn 2010-01-20 08:52:50

回答

7

那不是從32位移植到64,這只是運行在64位機器上的32位代碼,以確保它仍然有效。

要做到這一點的方法就是測試64位機器上的所有功能,就像每次發佈新版本時一樣,對吧? :-)

如果你真的想移植它(即編譯成一個64位可執行文件),第一步就是試試它。您可能會發現它的工作原理。我只會擔心移植問題,如果你嘗試它,然後出現問題。

然後,只有這樣,我才能去尋找原因。否則,這可能是浪費精力。

+0

太過真實。我唯一有意義的移植問題是假設指針是4個字節並加載內存映射文件。其他一切「只是起作用」。 – Goz 2010-01-20 08:41:42

0

一個需要注意的問題是,如果您要將簡單的舊數據(POD)存儲到文件中,或通過IPC或套接字將POD數據傳遞到其他應用程序等。 我們也有假定4字節長的代碼4個字節的指針。不用說,我們刪除了這些時代錯誤。

編譯器通常擅長髮現其他類型的錯誤,即長到int的轉換等。因此,它通常只是注意編譯器警告並相應地更改代碼的情況。

1

建立之前,您在x64模式下投影。

  1. 包括所有必要的64位DLL的需要爲您的項目
  2. 包括在鏈接庫文件 - 額外的依賴 - 配置屬性。
  3. 在C \ C++ - 預處理器 - 配置屬性中添加必要的預處理器。
  4. 啓用64級的警告 - 在編譯時,編譯器顯示警告

防爆

  1. 轉換數據類型從intsize_t可能存在數據
  2. 存儲指針地址的損失
  3. 魔術沒有。

參考下面的鏈接,更多的錯誤和警告,而移植 http://www.viva64.com/en/a/0065/