[英]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.