LNK2019 来自 MSVCRTD.lib 中未解析的外部符号 _main 对于新的 DLL 项目

LNK2019 From Unresolved External Symbol _main in MSVCRTD.lib For New DLL Project

我在 Visual Studio 2019 年开始了一个新的 C++ 解决方案,其中包含两个项目(以下简称:project1 和 project2)。

Project1 被设置为 DLL 项目并且没有 main() 或 _main() 函数。 Project2设置为启动项目,包含main()函数。

Project1 在构建时收到以下错误:

CODE: LNK2019

DESCRIPTION: unresolved external symbol _main referenced in function "int __cdecl invoke_main(void)" (?invoke_main@@YAHXZ)

PROJECT: Project1

FILE: MSVCRTD.lib(exe_main.obj)

我浏览了网站上的其他一些类似问题,以下信息似乎相关:

我还注意到它下面有一个相关的 LNK1120 错误(详情如下),尽管我的配置类型设置为 DLL...还有其他地方我需要将项目设置为 DLL 或删除 .exe 引用吗?

CODE: LNK1120

DESCRIPTION: 1 unresolved externals

PROJECT: Project1

FILE: Project1.exe

糟糕: 我忘了从项目属性中删除 x86 平台。对于将来遇到此问题的任何人:

如果您只想为 x64 构建,请从属性对话框 select 'Configuration Manager'。然后展开 'Active solution platform:' 下拉列表和 select 'edit'。 Select 您希望删除的配置(在我的例子中是 x86)和 select 'remove'。然后确保您的 'Configuration Type' 和 'SubSystem' 在所有其余平台上都已正确设置。 (如果您 select 平台:所有平台'并检查这些值,它们不应显示 'different options'。(这解决了我的问题。)

如果您希望为所有平台构建,请确保在项目属性对话框中为 'all platforms' 和 'all configurations' 设置 'Configuration Type' 和 'SubSystem' 选项。

确保对您希望这些更改影响的解决方案中的所有项目执行相同的操作。