我收到错误"LINK : error LNK2001: unresolved external symbol _WinMainCRTStartup"



请帮忙。在Visual Studio 2008上,我收到以下错误。

============================================================
   1>Microsoft (R) Windows Resource To Object Converter Version 9.00.30729.01
   1>Copyright (C) Microsoft Corporation.  All rights reserved.
   1>adding resource. type:ICON, name:1, language:0x0409, flags:0x1010, size:744
   1>adding resource. type:ICON, name:2, language:0x0409, flags:0x1010, size:296
   1>adding resource. type:GROUP_ICON, name:128, language:0x0409, flags:0x1030, size:34
   1>adding resource. type:DIALOG, name:100, language:0x0409, flags:0x1030, size:374
   1>adding resource. type:DIALOG, name:102, language:0x0409, flags:0x1030, size:784
   1>adding resource. type:VERSION, name:1, language:0x0409, flags:0x30, size:928
   1>adding resource. type:STRING, name:7, language:0x0409, flags:0x1030, size:68
   1>LINK : error LNK2001: unresolved external symbol _WinMainCRTStartup
   1>.Release/DiskTest.exe : fatal error LNK1120: 1 unresolved externals
   1>Build log was saved at "file://c:WinIRDirUtilitiesDiskTestReleaseBuildLog.htm"
   1>DiskTest - 2 error(s), 0 warning(s)
   1>Build log was saved at "file://c:WinIRDirUtilitiesCommAppReleaseBuildLog.htm"
==============================================================

情况是这样的。- 磁盘测试.exe是我的解决方案中的 3 个项目之一- 此项目非常适合调试 x64、发布 x64 和调试 Win32。 发布 Win32 是唯一生成这些错误的版本。- 我花了几个小时比较所有 4 种配置/计算机组合的属性页面,并且确信从一个版本到下一个版本没有缺少任何属性。 我特别注意了"其他依赖项"、"其他库目录"、"输入"等。 当然,.lib 文件的路径指向 \Debug 或 \Release 以及相应配置或平台的 \x86 或 \x64。

该项目唯一的"附加依赖项"是用于调试的 SBF_Util.lib 和 SBF_Utild.lib。 我确保该库的所有 4 个版本(调试 win32 和 x64,以及发布 win32 和 x64(存在于每个"附加库目录"中指定的文件夹中,我还检查了每个版本的库上的转储箱以确保平台匹配。

我见过缺少主入口点的其他情况,但在这种情况下,所有其他版本的构建都没有问题,只有在 Win32 Relase 版本上生成此错误,所以我认为我不需要更改代码中的任何内容。

谁能提供任何线索?,我不知道。 任何想法将不胜感激。 谢谢。

难以

置信

!!

我发现了问题!导致这个严重错误的原因非常简单:"空间">

事实证明,在 Configuration->C/C++->OutputFiles->Object 文件名下:我有:"$(IntDir(\ ">

直到我非常仔细地注意 Kdiff3 窗口,并注意到这个微小的下划线来表示空间,才注意到这个空间。
这个空间已经存在了几个月,因为这个项目无人看管(在我加入之前(,因为没有人能找到修复它的方法,所以他们只是停止使用它。很可能是复制粘贴错误。

谢谢大家的想法。特别是Xearinox的第一个答案,让我想到了比较所有模式。 我将尝试花一些时间编写一个工具,将项目/解决方案文件解析为一个 4 列的工作表,其中列出了所有配置和平台的所有属性,以便我们可以轻松比较它们。 再次感谢大家。

打开项目的设置页,转到链接系统并检查">子系统"属性。 通过从配置下拉框中切换配置,确保在所有项目配置中将其设置为相同的值。

假设预期的入口点是 main(或其变体之一,如 _tmainwmain (,您需要确保使用"子系统"属性设置为 CONSOLE。

缺少

作为入口点的WinMain。

就我而言,我尝试编译的文件具有错误的属性。

我在文件扩展名中创建了带有杂散字符的文件,因此我的项目给了它错误的项目类型:Does not participate in build

重命名后,我进入了它的属性,并将项目类型更改为 <reset to default> ,这会将其重置为 C/C++ Compiler

相关内容

最新更新