LNK2001:未解析的外部符号_mainCRTStartup

时间:2014-03-11 18:39:32

标签: c visual-studio-2012 linker lnk2001 ar.drone

我正在尝试使用Visual Studio 2012 Express for Windows Desktop编译Parrot ARDrone SDK v1.8的Win32示例。我正在运行Windows 7 64位。 SDK是用C语言编写的,而不是C ++。

到目前为止,我已经设法完成了每一个错误,但这个让我感到难过。

运行时,我在错误列表中收到这3条消息:
    Warning 1 warning LNK4001: no object files specified; libraries used C:\Users\Netex\Desktop\ARDrone_SDK_Version_1_8_20110726\ARDrone_SDK_Version_1_8_20110726\Examples\Win32\VCProjects\ARDrone\Win32Client\LINK Win32Client

Error 2 error LNK2001: unresolved external symbol _mainCRTStartup C:\Users\Netex\Desktop\ARDrone_SDK_Version_1_8_20110726\ARDrone_SDK_Version_1_8_20110726\Examples\Win32\VCProjects\ARDrone\Win32Client\LINK Win32Client

Error 3 error LNK1120: 1 unresolved externals C:\Users\Netex\Desktop\ARDrone_SDK_Version_1_8_20110726\ARDrone_SDK_Version_1_8_20110726\Examples\Win32\VCProjects\ARDrone\Debug\Win32Client.exe Win32Client

我尝试了许多建议的解决方案,包括将LinkSystem设置为Linker-> System to" Not Set"并手动设置入口点,摆脱2个错误并替换为:
`错误2错误LNK1221:无法推断子系统,必须定义'

我已经尝试将平台工具集设置为v90(我相信最初编译它),它会消除警告,但错误仍然存​​在。

问题:导致这些消息的原因是什么,以及如何解决?是因为我试图在64位系统上编译Win32控制台程序吗?

非常感谢任何帮助,

2 个答案:

答案 0 :(得分:0)

我正在将Qt VS Tools扩展与Visual Studio 2019一起使用,并且在使用新项目向导创建的Qt Gui应用程序上以C ++进行工作。在我的项目属性下的配置属性|链接器|系统,我已将SubSystem设置为“ Console(/ SUBSYSTEM:CONSOLE)”,以使调试时在我的GUI旁边出现一个控制台窗口。这样,我就可以查看使用qDebug添加的输出,如下所示:

qDebug()<<“测试”;

我发现,如果执行构建|清理解决方案,然后构建|构建解决方案,我在第一次构建时遇到此错误:

LNK2001无法解析的外部符号mainCRTStartup

最初,我试图弄清楚如何解决这个问题(并在这篇文章中跑了过去),但是后来我发现,如果我重复Build |构建解决方案该错误在以后的构建中消失了,因此我的解决方案是记住在清理后再构建两次。

要查看如果我从未将SubSystem更改为“ Console(/ SUBSYSTEM:CONSOLE)”,会发生什么情况,我使用向导创建了一个新的Qt Gui Application项目。在此项目中,“子系统”默认设置为“ Windows(/ SUBSYSTEM:WINDOWS)”。再次在清理后重新构建时出现错误,但是在这种情况下,它是另一个未解决的符号:

LNK2001无法解析的外部符号WinMainCRTStartup

尽管我对问题的原因感到好奇,但“两次生成”解决方案目前对我有用。

答案 1 :(得分:0)

就我而言,解决方案是明确命名“入口点”,例如使用命令行:

ml64 main.asm /subsystem:console /entry:main

最后一个选项:'/entry:main' 很关键