请帮忙。 在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:\WinIRDir\Utilities\DiskTest\Release\BuildLog.htm"
1>DiskTest - 2 error(s), 0 warning(s)
1>Build log was saved at "file://c:\WinIRDir\Utilities\CommApp\Release\BuildLog.htm"
==============================================================
情况如下。 - DiskTest.exe是我的解决方案中的3个项目之一 - 该项目完美适用于Debug x64,Release x64和Debug Win32。发布Win32是唯一产生这些错误的人。 - 我花了几个小时来比较所有4个配置/机器组合的属性页面,并且我确信从一个版本到下一个版本都没有遗漏任何属性。我特别注意“附加依赖项”,“其他Librari目录”,“输入”等。当然,.lib文件的路径指向\ Debug或\ Release,以及\ x86或\ x64,用于相应的配置或平台
此项目唯一的“附加依赖项”是用于Debug的SBF_Util.lib和SBF_Utild.lib。我确保这个库的所有4个版本(调试win32和x64,以及Release win32和x64)都存在于每个“附加库目录”中指定的文件夹中。我还检查了每个版本库上的dumpbin以确保平台匹配
我已经看到其他缺少主要入口点的情况,但在这种情况下,所有其他版本构建都没有问题,只有在Win32 Relase版本上生成此错误,所以我认为我不需要改变代码中的任何内容。
任何人都可以提供任何线索吗?我没有想法。任何想法将非常感谢。感谢。
答案 0 :(得分:5)
UNBELIEVABLE !!!
我发现了问题! 导致这一致命错误的原因非常简单:“空间”
事实证明,在Configuration-> C / C ++ - > OutputFiles->对象文件名:我有: “$(IntDir)\”
在我非常注意Kdiff3窗口之前没有注意到空间,并注意到这个微小的下划线表示空间。
这个空间已经存在了几个月,因为这个项目无人看管(在我登船之前),因为没有人能找到它的修复,所以他们就停止使用它了。
很可能是复制粘贴错误。
谢谢大家的意见。特别是Xearinox的第一个答案让我想到了比较所有模式。我将尝试找一些时间来编写一个工具来将项目/解决方案文件解析成一个4列的工作表,其中列出了所有配置和平台的所有属性,因此我们可以轻松地比较它们。再次感谢大家。
答案 1 :(得分:2)
打开项目的设置页面,转到链接器→系统,然后检查子系统属性。通过从配置下拉框切换配置,确保在所有项目配置中将其设置为相同的值。
假设您的预期入口点是main
(或其变体之一,例如_tmain
或wmain
),您希望确保将SubSystem属性设置为<强> CONSOLE
答案 2 :(得分:2)
WinMain缺少入口点。
答案 3 :(得分:0)
就我而言,我尝试编译的文件具有错误的属性。
我在文件扩展名中创建了一个带有迷路字符的文件,因此我的项目为其提供了错误的项目类型:Does not participate in build
。
重命名后,我进入了它的属性,并将项目类型更改为<reset to default>
,将其重置为C/C++ Compiler
。