[英]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
。
您遇到的問題是由於BOOL
是int
的類型別名,在使用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.