0

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

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

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

代码:LNK2019

描述:函数“int __cdecl invoke_main(void)”(?invoke_main@@YAHXZ) 中引用的未解析外部符号_main

项目:项目1

文件:MSVCRTD.lib(exe_main.obj)

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

  • 我使用“空项目”设置来创建两个项目
  • 以下配置适用于平台“x64”的“所有配置”
    • 配置属性->常规->配置类型:动态库(.dll)
    • 配置属性->链接器->系统->子系统:Windows (/SUBSYSTEM:WINDOWS)
      • 我还尝试将上述属性设置为子系统菜单上的每个可用选项,但都没有解决问题。

我还注意到它下面有一个相关的 LNK1120 错误(详细信息如下),尽管我的配置类型设置为 DLL,但有问题的文件被列为“project1.exe”......还有其他地方我需要将项目设置为 DLL 或删除 .exe 引用?

代码:LNK1120

描述:1 个未解决的外部

项目:Project1

文件:Project1.exe

4

1 回答 1

0

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

如果您只想为 x64 构建,请从属性对话框中选择“配置管理器”。然后展开“活动解决方案平台:”下拉菜单并选择“编辑”。选择您要删除的配置(在我的情况下为 x86),然后选择“删除”。然后确保在所有剩余平台上正确设置了“配置类型”和“子系统”。(如果您选择平台:所有平台并检查这些值,它们不应显示“不同的选项”。(这解决了我的问题。)

如果您希望为所有平台构建,请确保在项目属性对话框中的“所有平台”和“所有配置”上设置“配置类型”和“子系统”选项。

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

于 2020-12-21T09:56:52.517 回答