c++ - C++ 代码从 32 位到 64 位的转换

标签 c++

我正在使用 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 .

您遇到的问题源于 BOOLint 的类型别名,它在使用 Visual 的 32 位和 64 位平台上都是 32 位工作室编译器。另一方面,INT_PTR 在 64 位系统上是 64 位的,因此返回类型不匹配。

将对话框函数的返回类型更改为正确的 INT_PTR,它应该可以在 32 位和 64 位系统上工作。

关于c++ - C++ 代码从 32 位到 64 位的转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31113172/

相关文章:

C++:如何专门针对左值和右值

C++ 映射迭代器

c++ - 模仿 socket.h (C++) 的 OpenSSL 包装器

c++ - 树节点类的可变参数和模板模板参数以及部分规范

c++ - 如何使用 Eigen 在 C++ 中计算稀疏矩阵的差异

C++ 重载函数和错误

c++ - VS 2017 每次都重新编译所有文件

Windows 上的 iPhone 应用程序开发

c++ - 为什么角色在与他们打交道后会像 � 一样出现?

c++ - 得到这个错误: request for member 'at' in 'array3' , which is of pointer type