繁体   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