簡體   English   中英

在 C 中運行 WinMain 的問題

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM