繁体   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