200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > error LNK: 无法解析的外部符号 WinMain 该符号在函数 int __cdecl invoke_main(void)”中被引用

error LNK: 无法解析的外部符号 WinMain 该符号在函数 int __cdecl invoke_main(void)”中被引用

时间:2021-05-27 11:50:38

相关推荐

error LNK: 无法解析的外部符号 WinMain 该符号在函数 int __cdecl invoke_main(void)”中被引用

From:/u012570056/article/details/74639894

一,问题描述

MSVCRTD.lib(exe_winmain.obj) : error LNK: 无法解析的外部符号 WinMain,该符号在函数 "int __cdecl invoke_main(void)" (?invoke_main@@YAHXZ) 中被引用

CamShift.exe : fatal error LNK1120: 1 个无法解析的外部命令

error LNK2001: unresolved external symbol_WinMain

debug/main.exe:fatal error LNK 1120:1 unresolved externals

error executing link.exe;

二,原因及解决办法

产生这个问题的真正原因是c语言运行时找不到适当的程序入口函数,

一般情况下,如果是windows程序,那么WinMain是入口函数,在VS中新建项目为“win32项目”

如果是dos控制台程序,那么main是入口函数,在VS中新建项目为“win32控制台应用程序”

而如果入口函数指定不当,很显然c语言运行时找不到配合函数,它就会报告错误。

修改设置适应你的需求

如果是 windows桌面程序:

1. 菜单中选择项目->属性, 弹出项目属性页2. 在左边栏中依次选择:配置属性->C/C++->预处理器,然后在右边栏的预处理器定义对应的项中删除_CONSOLE,添加_WINDOWS3. 在左边栏中依次选择:配置属性->链接器->系统,然后在右边栏的子系统对应的项改为Windows(/SUBSYSTEM:WINDOWS)

如果是 控制台程序:

1. 菜单中选择项目->属性, 弹出项目属性页2. 在左边栏中依次选择:配置属性->C/C++->预处理器,然后在右边栏的预处理器定义对应的项中删除_WINDOWS,添加_CONSOLE3. 在左边栏中依次选择:配置属性->链接器->系统,然后在右边栏的子系统对应的项改为CONSOLE(/SUBSYSTEM:CONSOLE)

VS需要将项目由debug 改成release

示例代码:

#include <windows.h>LONG WINAPI WndProc(HWND, UINT, WPARAM, LPARAM);int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd){WNDCLASS wc;HWND hwnd;MSG msg;wc.style = 0; //类样式wc.lpfnWndProc = (WNDPROC)WndProc; //window 程序地址wc.cbClsExtra = 0; //类 额外的字节wc.cbWndExtra = 0; //window 额外的字节wc.hInstance = hInstance; //实例句柄 wc.hIcon = LoadIcon(NULL, IDI_WINLOGO); //图标句柄wc.hCursor = LoadIcon(NULL, IDC_ARROW); //鼠标句柄wc.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1); // 背景颜色wc.lpszMenuName = NULL; //菜单名wc.lpszClassName = "MyWndClass"; //WNDCLASS 名RegisterClass(&wc);hwnd = CreateWindow("MyWndClass", //WNDCLASS 名"SDK_Application", //window titleWS_OVERLAPPEDWINDOW, //window styleCW_USEDEFAULT, //水平位置CW_USEDEFAULT, //垂直位置CW_USEDEFAULT, //初始化宽度CW_USEDEFAULT, //初始化高度HWND_DESKTOP, //父窗口句柄NULL,//菜单句柄hInstance, //应用程序的 实例 句柄NULL //window 创建数据);ShowWindow(hwnd, nShowCmd);UpdateWindow(hwnd);while (GetMessage(&msg, NULL, 0, 0)){TranslateMessage(&msg);DispatchMessage(&msg);}return msg.wParam;}LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam){PAINTSTRUCT ps;HDC hdc;switch (message){case WM_PAINT:hdc = BeginPaint(hwnd, &ps);Ellipse(hdc, 0, 0, 200, 100);EndPaint(hwnd, &ps);return 0;case WM_DESTROY:PostQuitMessage(0);return 0;}return DefWindowProc(hwnd, message, wParam, lParam);}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。