MSVCRTD.lib(exe_main.obj) : error LNK2019: 无法解析的外部符号 _main,该符号在函数 "int __cdec

-兮 2019-01-19 09:42:28

#include <Windows.h> //处理一些视觉特效,例如窗口,控件,枚举,样式

//在创建一个应用程序之前,必须先声明一个窗口过程的原型才能在窗口结构中使用它
LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);

//WINAPI或stdcall意味着栈的清理工作由被调用函数来完成
//hThis是应用程序当前实例的句柄;hPrev是应用程序上一个实例的句柄;
//szCmdLine是应用程序的命令行,包括该程序的名称;iCmdShow控制如何显示窗口
int WINAPI WinMain(HINSTANCE hThis, HINSTANCE hPrev, LPSTR szCmdLine, int iCmdShow)
{
UNREFERENCED_PARAMETER(hPrev); //告诉编译器不能使用某些参数,方便编译器进行一些额外的优化
UNREFERENCED_PARAMETER(szCmdLine);

WNDCLASSEX wndEx = { 0 }; //实例化窗口结构
wndEx.cbClsExtra = 0; //实例化窗口类后分配的额外字节数
wndEx.cbSize = sizeof(wndEx); //窗口结构的大小(字节为单位)
wndEx.cbWndExtra = 0; //实例化窗口实例后分配的额外字节数
wndEx.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1); //窗口类背景画刷的句柄
wndEx.hCursor = LoadCursor(NULL, IDC_ARROW); //窗口类光标的句柄
wndEx.hIcon = LoadIcon(NULL, IDI_APPLICATION); //窗口类图标的句柄
wndEx.hIconSm = LoadIcon(NULL, IDI_APPLICATION); //窗口类图标的句柄
wndEx.hInstance = hThis; //窗口过程的实例句柄
wndEx.lpfnWndProc = WndProc; //指向窗口过程的指针
wndEx.lpszClassName = TEXT("GUIProject"); //指向以空字符结尾的字符串或原子的指针
wndEx.lpszMenuName = NULL; //指向以空字符结尾的字符串的指针,该字符串指定了窗口类菜单的资源名
wndEx.style = CS_HREDRAW | CS_VREDRAW;

if (!RegisterClassEx(&wndEx))
{
return -1;
}

HWND hWnd = CreateWindow( wndEx.lpszClassName, TEXT("GUI Project"), WS_OVERLAPPEDWINDOW,
200, 200, 400, 300, HWND_DESKTOP, NULL, hThis, 0);
if (!hWnd)
{
return -1;
}

UpdateWindow(hWnd);

ShowWindow(hWnd, iCmdShow); //设置指定窗口的显示状态
MSG msg = { 0 }; //显示窗口消息

while (GetMessage(&msg, NULL, NULL, NULL))
{
TranslateMessage(&msg); //把虚拟键消息翻译成字符消息
DispatchMessage(&msg); //分发一条消息给窗口过程
}

DestroyWindow(hWnd);
UnregisterClass(wndEx.lpszClassName, hThis); //注销窗口类,释放该类占用的内存
return (int)msg.wParam; //从应用程序消息队列中返回一个成功推出代码或最后一个消息代码
}

//hWnd表示窗口标识,uMsg窗口消息代码(无符号整数),wParam和lParam传递应用程序定义的数据(64位长整型数)
//函数返回64位有符号长整型
LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
switch (uMsg)
{
case WM_CLOSE:
{
PostQuitMessage(0); //释放系统资源,并安全关闭该应用程序
break;
}
default:
{
//处理应用程序未处理的窗口信息,函数确保每个消息都被处理
return DefWindowProc(hWnd, uMsg, wParam, lParam); //默认窗口过程
}
}
return 0;
}

...全文
2944 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
原来如此~ 2019-12-19
  • 打赏
  • 举报
回复
附加依赖项中添加:qtmaind.lib
独孤过 2019-01-19
  • 打赏
  • 举报
回复 2
这入口函数是main,怕是创建的控制台项目,改为创建Win32项目,也可以更改项目属性,先打开属性页,配置属性-->链接器-->系统-->子系统-->窗口,之后点击确定。
-兮 2019-01-19
  • 打赏
  • 举报
回复
提示: 1>------ 已启动生成: 项目: GUIProject, 配置: Debug Win32 ------ 1>MSVCRTD.lib(exe_main.obj) : error LNK2019: 无法解析的外部符号 _main,该符号在函数 "int __cdecl invoke_main(void)" (?invoke_main@@YAHXZ) 中被引用 1>E:\VSProject\GUIProject\Debug\GUIProject.exe : fatal error LNK1120: 1 个无法解析的外部命令 1>已完成生成项目“GUIProject.vcxproj”的操作 - 失败。 ========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========

64,676

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧