错误LNK1561:必须定义入口点

Error LNK1561: entry point must be defined

本文关键字:定义 入口 LNK1561 错误      更新时间:2023-10-16

我正在使用Visual Studio 2012。

我的解决方案有3个项目

项目A

项目B

项目C

层次结构类似

projectC依赖于projectB,而后者又依赖于projectA。项目C中有一个主函数,项目B和项目a中没有主函数。我得到的错误是:

error LNK1561: entry point must be defined      projectA
error LNK1561: entry point must be defined      projectB

我试着在配置属性->链接器->系统->子系统到控制台(/SubSystem:Console)但问题仍然存在

帮我摆脱困境。

您似乎误解了"模块"一词。Visual Studio中没有这样的C++项目;C++项目可以分为三类:

  • 程序-编译生成一个可以执行的exe文件
  • 静态库-编译生成一个lib文件,该文件可能包含在另一个项目中,并在编译过程中链接
  • 动态库-编译生成一个dll文件,该文件可以在运行时附加到程序中,并提供额外的功能

根据您的描述,您希望projectB和projectC是一个静态库,但您却将它们创建为可执行文件。再次运行新项目向导,然后选择"静态库"而不是"Windows应用程序"。

您可以在MSDN库中阅读更多关于静态库的信息。

如果静态库对于您的应用程序来说太重,您可以简单地在项目中包含projectB和projectC文件(可以选择注意名称空间,以免混淆类的名称)。这完全取决于您计划在这些"模块"中实现多少功能。

将Properties->Linker->System->SubSystem设置为"Windows(/SubSystem:Windows)"

可能发生的事情,我发生的事情是,当你将项目的属性从.exe切换到.dll时,如果你从调试切换到发布或从x86切换到x64,每次都会将你切换回.exe。每个配置都有自己的属性。

因此,请转到"属性">"配置类型">.dll

如果你确实想制作一个.dll.

我猜你是在使用Windows来创建这个项目,对我来说,如果我通常使用SDL,我会遇到这个错误,你所要做的就是键入应该修复它的#include <Windows.h>,如果不是,我不知道如何修复它。