簡體   English   中英

將C ++代碼從32位轉換為64位

[英]Transformation of C++ code from 32 bit to 64 bit

我正在使用VS2008。我在32位編譯器中編譯C ++代碼。 我正在使用DialogBoxParam創建一個GUI及其工作正常。 但是相同的代碼在64位編譯器中進行了編譯,但出現錯誤C2664: 'DialogBoxParamA' : cannot convert parameter 4 from 'BOOL (__cdecl *)(HWND,UINT,WPARAM,LPARAM)' to 'DLGPROC' 請幫助我

如果檢查DLGPROC參考,您將看到它應返回INT_PTR而不是BOOL

您遇到的問題是由於BOOLint的類型別名,在使用Visual Studio編譯器的32位和64位平台上, BOOL都是32位。 另一方面, INT_PTR在64位系統上為64位,這會使返回類型不匹配。

將對話框函數的返回類型更改為正確的INT_PTR ,它應該在32位和64位系統上可以工作。

由於您是在32位計算機上編譯的,因此遷移到64位計算機的常見問題是long和int在32位平台上都是32位,而long是64位而int是32位。 64位平台。 如果使用指針引用或字節操作,則可能會導致函數調用困難。

您需要檢查涉及的實際處理。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM