簡體   English   中英

與空項目相比,在 Visual Studio 中使用模板創建解決方案實際上有什么作用?

[英]What does creating a Solution using a template in Visual Studio actually do versus an empty project?

我正在關注 Molly Rocket 的 C 簡介教程,但在使用 Empty Project 選項時在 VisualStudio 2019 的調試器中運行以下代碼時遇到問題。

我正在使用 Empty Project 選項而不是加載模板,因為這是 Molly 使用的,而我可以加載模板並在那里運行代碼,我想知道為什么會出現此錯誤,以便更好地理解 Visual Studio和 C++。

#include <Windows.h>

void learnC(void) {

    OutputDebugStringA("Test\n");

}

int CALLBACK WinMain(
    HINSTANCE hInstance,
    HINSTANCE hPrevInstance,
    LPSTR lpCmdLine,
    int nCmdShow) 
{
    learnC();
}

收到錯誤 LNK2019 這根本沒有幫助,因為它只是一個通用的捕獲所有錯誤代碼。

錯誤 LNK2019:在 function“int __cdecl invoke_main(void)”(?invoke_main@@YAHXZ) 中引用了未解析的外部符號主

我已嘗試更新 VS2019 的兼容性設置以及人們建議使用的其他設置,但錯誤仍然存在。

同樣,當我創建解決方案時,我使用了空白文檔而不是模板,因為這是 Molly Rocket 在編寫此代碼時使用的。

當我使用模板(我使用 Windows 桌面應用程序模板)並刪除所有代碼並粘貼到我在原始文檔中的內容時,我沒有收到錯誤,我想知道為什么。

感謝您的時間!

創建空項目時, SubSystem的值默認為Console

在此處輸入圖像描述

根據文檔

使用 /SUBSYSTEM:CONSOLE 的應用程序; 調用 main(或 wmain)

使用 /SUBSYSTEM:WINDOWS 的應用程序; 調用 WinMain(或 wWinMain),必須將其定義為使用 __stdcall

就我而言,您應該將SubSystem設置為windowsProperties -> Linker -> System -> SubSystem

在此處輸入圖像描述

有關/SUBSYSTEM (Specify Subsystem)的更多詳細信息,建議您參考鏈接: https://docs.microsoft.com/en-us/cpp/build/reference/subsystem-specify-subsystem?view=vs- 2019

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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