我正在使用 VS 2008。我在 32 位编译器中编译我的 C++ 代码。我正在使用 DialogBoxParam 创建一个 GUI 并且它工作正常。但是相同的代码是在 64 位编译器中编译的,我得到错误 C2664: 'DialogBoxParamA' : cannot convert parameter 4 from 'BOOL (__cdecl *)(HWND,UINT,WPARAM,LPARAM)' to 'DLGPROC'
。请帮我解决这个问题
最佳答案
如果您检查例如this DLGPROC
reference你会看到它应该返回 INT_PTR
而不是 BOOL
.
您遇到的问题源于 BOOL
是 int
的类型别名,它在使用 Visual 的 32 位和 64 位平台上都是 32 位工作室编译器。另一方面,INT_PTR
在 64 位系统上是 64 位的,因此返回类型不匹配。
将对话框函数的返回类型更改为正确的 INT_PTR
,它应该可以在 32 位和 64 位系统上工作。
关于c++ - C++ 代码从 32 位到 64 位的转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31113172/