13

我正在使用 Visual Studio 2012。

我的解决方案有 3 个项目

项目A

项目B

项目C

层次结构就像

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

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

我尝试在配置属性 -> 链接器 -> 系统 -> 子系统中更改为控制台 (/SUBSYSTEM:CONSOLE) 但问题仍然存在

帮我解决这个问题。

4

4 回答 4

20

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

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

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

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

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

于 2013-06-21T06:23:57.933 回答
10

set Properties -> Linker -> System -> SubSystem to "Windows (/SUBSYSTEM:WINDOWS)"

于 2013-10-06T17:49:25.887 回答
4

可能发生的事情,发生在我身上的事情是,当您将项目的属性从 .exe 切换到 .dll 时,如果您从调试切换到发布或从 x86 切换到 x64,每次这样做都会将您切换回。可执行程序。每个配置都有它自己的属性。

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

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

于 2019-02-08T19:40:09.363 回答
-1

我猜你是用 Windows 来创建这个项目#include <Windows.h>的确定如何解决这个问题。

于 2016-08-10T00:11:06.480 回答