【问题标题】:Can't find entry point找不到入口点
【发布时间】:2020-06-02 05:35:08
【问题描述】:

我想创建一个新的 c++ 项目并开始编码。我正在使用包含 30 多个项目的现有解决方案。因此使用 GwMain(..) 代替 main()。这适用于所有其他文件,但不适用于我创建新的 c++ 项目时。我收到链接器错误:

LNK2019 unresolved external symbol _main referenced in function "int__cdel invoke_main(void)" (?invoke_main@@YAHXZ)

File: MSVCRTD.lib(exe_main.obj)
  • 我已经将属性配置与其他项目进行了比较,并且 几乎一样。解决方案是从visual studio迁移过来的 2012 到 2019 我想这是它不起作用的原因之一 应该怎么做。
  • 我已经检查了这个:链接器->系统->子系统-> Windows。

    当我将它从控制台更改为 Windows 时,它会显示:

    LNK2019 未解析的外部符号 _WinMain 在函数中引用 "int__cdel invoke_main(void)" (?invoke_main@@YAHXZ)

  • 而且我不使用 cmake
  • 当我使用 int main(){return 0;} 时,我没有收到任何错误,但我必须使用 GwMain()
  • 当我在高级下更改入口点时,我实际上得到了更多 错误。我尝试插入 GwMain。

代码是这样的:

#include <gwcore.hpp>
#include <gw.hpp>

int GwMain(int, char**)
{

    return 0;
}

这里使用了 Grit 一个非常古老的框架。

【问题讨论】:

  • 我很确定问题是您没有正确链接到打算使用的任何 GW 库。我不知道那是什么,但GwMain 将从库main 函数中调用(大概被一些需要在GwMain 之前/之后运行的初始化和/或拆卸代码包围。我是对此不熟悉,并且多年没有为 Windows 编写代码。

标签: c++ main visual-studio-2019 entry-point


【解决方案1】:

请检查项目 > 属性 > 常规 > 项目默认值 > 配置类型。

如果这是“.exe”,那么这个项目需要一个 main。否则,如果这是“.dll”或“.lib”,您的代码应该编译。

【讨论】:

  • 配置类型为应用程序 (.exe)。但是我这里有多个项目也使用 GwMain 而不是 main 作为入口点,并且也是 .exe。
  • @S.Yildiz 看看那些其他 exe 项目它们链接到哪些库。所需的主要功能将由这些库之一提供,您尚未链接到该库。
【解决方案2】:

在检查所有编译和链接选项后,其他项目工作正常。

从您的解决方案中,选择一个有效的项目(并且使用 GwMain)。右键->属性并在“通用属性”中检查其依赖关系:

对其他正常工作(并且使用 GwMain)的项目执行此操作,并尝试查看是否存在允许他们使用 GwMain 的 公共依赖项,然后尝试添加此依赖项到你的项目不起作用

【讨论】:

    猜你喜欢
    • 2015-02-03
    • 2012-12-08
    • 2019-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-18
    • 2017-01-09
    相关资源
    最近更新 更多