错误LNK1561:必须定义入口点

时间:2013-06-21 05:31:27

标签: c++ c visual-studio-2010 linker-errors

我正在使用Visual Studio 2012.

我的解决方案有3个项目

projectA

项目B

项目C

,层次结构就像

projectC 取决于 projectB ,而 projectA 依赖于 projectA 。 projectC中有一个主函数,而projectB和projectA中没有main。 我得到的错误是:

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

我试过改变了 配置属性 - >链接器 - >系统 - >子系统到控制台(/ SUBSYSTEM:CONSOLE)但问题仍然存在

帮助我解决这个问题。

4 个答案:

答案 0 :(得分:18)

看来,你误解了“模块”一词。 Visual Studio中没有这样的C ++项目; C ++项目可以分为三类:

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

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

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

如果静态库对于您的应用程序来说太重要了,您可以在项目中包含projectB和projectC文件(可选择处理名称空间而不要混淆类的名称)。这完全取决于您计划在这些“模块”中实施多少功能。

答案 1 :(得分:9)

设置属性 - >链接器 - >系统 - >子系统到“Windows(/ SUBSYSTEM:WINDOWS)”

答案 2 :(得分:2)

可能发生的事情,与我有关的事情是,当您将项目的属性从.exe切换到.dll时,如果您从调试切换到发行版,或者从x86切换到x64,则每次执行时都会切换您回到.exe。每个配置都有其自己的属性。

因此,请转到“属性”>“配置类型”>“。dll”

如果确实要创建一个.dll。

答案 3 :(得分:0)

我猜你是否正在使用Windows来创建这个项目,对我来说,如果我通常使用SDL我会收到此错误,您只需键入此#include <Windows.h>应该修复它,如果没有,那么我不确定如何解决它。