[英]Issues running WinMain in C
目前我在 C 中遇到WinMain
问题(特别是在 Visual Studio 中)。
例如...
#include <stdio.h>
#include <Windows.h>
int WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
PSTR lpCmdLine, INT nCmdShow)
{
return(0);
}
1>------ Build started: Project: GameB, Configuration: Debug x64 ------
1>LIBCMTD.lib(exe_main.obj) : error LNK2019: unresolved external symbol main referenced in function "int __cdecl invoke_main(void)" (?invoke_main@@YAHXZ)
1>E:\James\VisualStudio\CProjects\GameB\x64\Debug\GameB.exe : fatal error LNK1120: 1 unresolved externals
1>Done building project "GameB.vcxproj" -- FAILED.
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
只是这个基本设置给了我一个“WinMain 的注释不一致”警告。 两天来我一直在寻找任何帮助,最接近答案的是人们在 C++ 的上下文中谈论 WinMain。 我觉得这是 Visual Studio 的一个问题,因为我最初只是使用 VS Code 并设法让一个应用程序(一个生成弹出窗口的应用程序)编译和运行。
你只是设置你的winmain错误。 这应该有效:
int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PWSTR pCmdLine, int nCmdShow);
或者
INT WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
PSTR lpCmdLine, INT nCmdShow)
{
return 0;
}
不要忘记 #include <Windows.h> 并将子系统更改为 windows。
您需要在设置中将子系统从Console
设置为Windows
,方法是在解决方案资源管理器中右键单击您的项目,选择properties
,然后转到Linker->System
并将SubSystem
设置为Windows(/SUBSYSTEM:WINDOWS)
。
要使用WinMain
程序入口点,您需要告诉链接器以“Windows”子系统为目标,而不是构建控制台应用程序。 否则,链接器将寻找(但找不到)C 程序的标准main
入口点。
在解决方案资源管理器中,右键单击您的项目并选择“属性”。 然后导航到“Linker -> System”页面并选择“Windows (/SUBSYSTEM:WINDOWS)”作为目标:
在您的“注释不一致”警告中,请参阅此 Q/A: “WinMain”的注释不一致
此外,正如SNO 的回答中所述,您应该将WINAPI
属性添加到您的WinMain
函数中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.