error LNK2019: 无法解析的外部符号 main,函数 “int __cdecl invoke_main(void)“
书籍:《windows程序设计(第五版)》的开始
环境:visual studio 2022
内容:格式化消息框
说明:以下内容大部分来自腾讯元宝。
问题
选择“控制台应用程序(.exe)”模板,创建空项目后,新建SCRNSIZE.c,输入以下代码后,编译,报错:error LNK2019: 无法解析的外部符号 main,函数 "int __cdecl invoke_main(void)"
#include <Windows.h>
#include <tchar.h>
#include <stdio.h>
int CDECL MessgeBoxPrintf(TCHAR* szCaption, TCHAR* szFormat, ...)
{
TCHAR szBuffer[1024];
va_list pArgList;
va_start(pArgList, szFormat);
_vsnwprintf_s(szBuffer, sizeof(szBuffer) / sizeof(TCHAR), _TRUNCATE, szFormat, pArgList);
va_end(pArgList);
return MessageBox(NULL, szBuffer, szCaption, 0);
}
int WINAPI WinMain(HINSTANCE hInstatnce, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow)
{
int cxScreen, cyScreen;
cxScreen = GetSystemMetrics(SM_CXSCREEN);
cyScreen = GetSystemMetrics(SM_CYSCREEN);
MessgeBoxPrintf(TEXT("ScrnSize"), TEXT("The screen is %i pixels wide by %i pixels high."), cxScreen, cyScreen);
return 0;
}
原因
“控制台应用程序(.exe)”模板对应的程序入口应该是main或wmain而非WinMain或wWinMain
,创建工程时选择"桌面应用程序(.exe)"模板即可解决这个问题,程序入口为WinMain或wWinMain。
相关内容
/SUBSYSTEM:WINDOWS-CSDN博客https://blog.csdn.net/qq_20725221/article/details/146253392