【问题标题】:Compiler Error C2664 or C2731 C++ 2015编译器错误 C2664 或 C2731 C++ 2015
【发布时间】:2016-01-05 20:17:12
【问题描述】:

我已经能够很好地处理WinMain 函数。现在我正在尝试制作一个win32 应用程序:

#include <Windows.h>
int WINAPI WinMain() {
    MessageBox(NULL,"Test", "Hello World", NULL);
    return 0;
}

然后我得到错误C2731

【问题讨论】:

  • 错误信息是什么?
  • 请编辑您的问题以包含完整的和未经编辑的实际错误。

标签: c++ winapi directx


【解决方案1】:

你没有给WinMain()方法提供任何参数,错误C2731说这个方法cannot be overloaded

来自MSDN

int WINAPI WinMain(HINSTANCE hInstance,
               HINSTANCE hPrevInstance,
               LPSTR lpCmdLine,
               int nCmdShow);

错误 C2664 很可能是您对 MessageBox 的调用,因此请尝试更改为:

MessageBox(NULL, L"Test", L"Hello World", NULL);

【讨论】:

    【解决方案2】:

    我发现我没有使用 int main.cpp 作为我的主要源代码文件,我的 WinMain 需要切换到 wWinMain

    【讨论】:

    • 这些都没有任何意义。没有主源代码文件之类的东西。所有源文件都编译为目标代码,链接器将目标代码组装成可执行映像。 Michael McMullin's answer 概述了真正的问题。
    猜你喜欢
    • 2011-12-22
    • 1970-01-01
    • 2018-09-25
    • 1970-01-01
    • 2017-11-25
    • 2020-03-01
    • 1970-01-01
    • 2014-06-29
    • 1970-01-01
    相关资源
    最近更新 更多