gpt4 book ai didi

c++ - WinMain 重新定义

转载 作者:太空狗 更新时间:2023-10-29 20:43:50 27 4
gpt4 key购买 nike

我刚开始使用 C++,但遇到了无法修复的错误。

这是我到目前为止的所有代码(甚至无法让 hello world 工作):

#include "stdafx.h"
#include <windows.h>


int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow)
{
MessageBox(NULL, L"Hello World!",
L"Hello World!",
MB_ICONEXCLAMATION | MB_OK);
return 0;
}

但是当我尝试运行它时出现了这个错误:

Test.cpp(11): error C2373: 'WinMain' : redefinition; different type modifiers C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\winbase.h(2588) : see declaration of 'WinMain'

当我查看 WinMain 的声明时,我看到在每个参数之前都有一个“__in”。我尝试添加它,但没有运气。我也尝试用 CALLBACK 替换 WINAPI,但这也没有用。

最佳答案

简单的解决方法是

使用标准的 main 函数

像这样:

#undef UNICODE
#define UNICODE
#incude <windows.h>

int main()
{
MessageBox(
0,
L"Hello World!",
L"Hello World!",
MB_ICONEXCLAMATION | MB_SETFOREGROUND
);
}

现在您唯一的问题是使用 Microsoft 的工具集将其构建为 GUI 子系统应用程序,这在这方面有点落后(GNU 工具链没有这样的问题)。

为此,通过 Microsoft 的链接,使用此链接器选项(除了选择 GUI 子系统之外):/entry:mainCRTStartup

请注意,您可以将该选项放入名为 LINK 的环境变量中。

编码愉快! :-)

关于c++ - WinMain 重新定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14428429/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com