【问题标题】:visual studio solution with multiple projects doesnt compile具有多个项目的 Visual Studio 解决方案无法编译
【发布时间】:2012-01-13 13:31:22
【问题描述】:

我首先在eclipse中做了一个程序(mingw编译器)。现在我将代码翻译成 Visual Studio 2008。 它是一个具有多个项目的解决方案。其中 2 个项目用于运行(控制台)程序。其他 2 个项目是这些项目的辅助类。我已经设置了项目依赖项,以便以正确的顺序编译项目。 我现在收到一条错误消息 LNK2019 和 LNK1120,因为我在 helper 项目中没有 main。 我试图在没有链接的情况下编译帮助项目,但我不知道我应该怎么做。我尝试添加 -c 编译器选项但不成功。我也尝试在辅助项目中添加一个无用的 main,但是在编译真正的 main 时编译失败,并出现“函数不能重载”。

我该如何解决这个问题,这样我就可以在没有 main 的情况下拥有辅助项目?

【问题讨论】:

    标签: c++ visual-studio-2008 main lnk2019


    【解决方案1】:

    如果你想创建一个帮助库,你必须使用项目类型Class Library 而不是Console Application

    【讨论】:

    • 谢谢,设置配置属性 -> 常规 -> 配置类型为静态库解决了这个问题
    【解决方案2】:

    您可以将帮助程序编译为静态库并将它们链接到您的主程序。

    【讨论】:

      【解决方案3】:
      1. 在解决方案资源管理器中右键单击项目以独立于整个解决方案对其进行编译。您也可以单独构建它们,这将执行编译和链接。

      2. 在 Windows(我不确定 Linux)中,DLL 仍然需要一个入口点。常规名称是DllMain。如果您不想要一个入口点,那么您应该创建一个静态库而不是 DLL,它会在链接时链接到您的应用程序,而不是在运行时动态加载。

        您需要更改项目的属性,以便告诉它您现在创建的是静态库,而不是动态库。这将阻止链接器搜索main 函数。您可能会发现 this walkthrough 很有帮助。

        “函数不能重载”错误可能是因为您添加的虚拟 main 函数具有/具有错误的签名。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-10-10
        • 1970-01-01
        • 2018-10-02
        • 1970-01-01
        相关资源
        最近更新 更多