c++ VS2017 15.6.1更新后未解决的外部“int __cdecl invoke_main(void)”

kyvafyod  于 2023-01-18  发布在  其他
关注(0)|答案(7)|浏览(72)

我希望有人能在这里帮助/指导我。我有一个工作的应用程序,但今天我不断得到以下错误:

LNK2019 unresolved external symbol main referenced in function "int __cdecl invoke_main(void)" (?invoke_main@@YAHXZ)

唯一的变化是我将VS 2017 15.5.4更新为VS 2017 15.6.1(最新)。我一直在这里和那里阅读,我相信某处的一些设置可能已经改变,现在程序未能“看到”主要功能。声明一下,我确实在我的笔记本电脑上尝试了这个代码,它仍然有VS 2017 15. 5. 4,运行没有任何问题。任何想法,它可能是什么?

uujelgoq

uujelgoq1#

检查项目配置。
右键单击项目-〉属性-〉链接器-〉系统-〉子系统。
您可能希望将其设置为Windows (/SUBSYSTEM:WINDOWS)

mrphzbgm

mrphzbgm2#

我找不到一个解决办法。我不得不做一个新的项目,把所有的东西都搬到那里。

3wabscal

3wabscal3#

当我链接SDL2库时,我得到了这个错误,但是只包含SDL2.lib,忘记了SDL2main.lib。当我在源代码中包含sdl. h时,错误立即出现,而没有直接调用代码中的任何SDL函数。由于引用了invoke_main(void),我感到困惑,因此没有怀疑链接时丢失了任何外部库。

iqih9akk

iqih9akk4#

检查以下几点:
1.包含main函数的.c/.cpp文件是否添加到vsproject文件中?
1.确保选择“配置-〉C/C++ -〉高级-〉调用转换-〉__cdelc(/Gd)”

jchrr9hc

jchrr9hc5#

这对我很有效:

1.在解决方案资源管理器中,右键单击包含main()函数的文件,并将其从项目中排除。
1.右键单击“项目”并选择“添加现有项”,然后将排除的文件添加回“项目”。
1.清理项目并生成。

3pmvbmvn

3pmvbmvn6#

如果您正在使用CMake项目-很可能您的项目中有CMakeLists.txt调用add_executable(MY_TARGET my_source.cpp),并且此目标的源文件名不同。
这就是为什么在我的情况下发生这个错误。

xxb16uws

xxb16uws7#

尝试包含tchar. h头文件,沿着windows.h:

#include <windows.h>
#include <tchar.h>

此外,链接器子系统属性应为Windows (/SUBSYSTEM:WINDOWS)

相关问题