我有一个Qt项目,我在开发过程中显示了调试控制台,我即将发布产品给我删除了qmake控制台命令: CONFIG + = console
然而,当我这样做时,我收到以下错误:
link /LIBPATH:"c:\Qt\4.5.0\lib" /NOLOGO /INCREMENTAL:NO /LTCG /MANIFEST /MANIFESTFILE:"./_obj/win32\Lynx.intermediate.manifest" /SUBSYSTEM:WINDOWS "/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" /VERSION:4.00 /OUT:bin\win32\Lynx.exe @C:\DOCUME~1\hannentp\LOCALS~1\Temp\nm1C9.tmp
link_.exe /LIBPATH:c:\Qt\4.5.0\lib /NOLOGO /INCREMENTAL:NO /LTCG /MANIFEST /MANIFESTFILE:./_obj/win32\Lynx.intermediate.manifest /SUBSYSTEM:WINDOWS /MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*' /VERSION:4.00 /OUT:bin\win32\Lynx.exe @C:\DOCUME~1\hannentp\LOCALS~1\Temp\nm1C9.tmp~
LINK_ : fatal error LNK1181: cannot open input file 'name='Microsoft.Windows.Common-Controls''
NMAKE : fatal error U1077: '"C:\Program Files\Microsoft Visual Studio 9.0\VC\Bin\link.EXE"' : return code '0x49d'
Stop.
我认为缺少一个lib路径,但是我确实已经设置了很多环境变量并且已经工作了。有没有人看过这个并知道Microsoft.Windows.Common-Controls的位置?
我也是从buildbot运行这个,所以VS2008的IDE并不是我想要帮助的地方。
答案 0 :(得分:3)
似乎命令行被低估了:
"/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'"
在第二行,引号消失,链接器将每个单词视为要链接的对象。你应该只是添加引号(如果你是谁添加了这个参数),即。以"\"
开头和结尾(3个字符代替一个引号)。似乎其他消息来源也提出了这一点,所以试着尝试一下。
答案 1 :(得分:1)
不确定,如果你在这个问题上取得了进一步的进展。
我有类似的错误,但使用的是msvc2005(不是IDE)。 我没有link_.exe的任何实例,所以我无法验证您的修复。
当我启用控制台(CONFIG + = console)时,它无法管理链接 由于其他问题 - 找不到切入点:
Fatal Error LNK1561: Entry Point Must Be Defined
我随机找到http://support.microsoft.com/kb/140597
其中讨论了尾随反斜杠字符,认为它是针对msvc 4并且稍后修复的。我检查了我的代码,并且在指定时我跟踪了forwards
.pro文件中的LIBPATH。我修复了那些,并用(CONFIG + = console)编译了。现在我删除了该选项,并且遇到了不同但有点逻辑的问题:
MSVCRT.lib(crtexew.obj) : error LNK2001: unresolved external symbol _WinMain@16
app.exe : fatal error LNK1120: 1 unresolved externals
看看你的nmake输出,我想知道是否混合正向和反斜杠字符 在
/MANIFESTFILE:"./_obj/win32\Lynx.intermediate.manifest"
造成这个问题。虽然它可能会有所不同。
注意,我的.pro文件中也有CONFIG -= embed_manifest_exe
。
我的nmake看起来像这样:
link /LIBPATH:"c:\Apps\boost\boost_1_38\lib" /NOLOGO /INCREMENTAL:NO /LTCG /SUBSYSTEM:WINDOWS "/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" /OUT:valueForSba.exe @C:\DOCUME~1\LOCALS~1\Temp\nm398.tmp
Creating library app.lib and object app.exp
MSVCRT.lib(crtexew.obj) : error LNK2001: unresolved external symbol _WinMain@16
app.exe : fatal error LNK1120: 1 unresolved externals
我也没有在这个项目中使用任何qt类,只使用qmake来获取Makefile。 (qmake来自4.5.1商业版)
答案 2 :(得分:0)
我的印象是Qt的免费版本仅使用Mingw而非Visual Studio构建。如果您使用Qt的免费版本可能是问题。如果您不熟悉Mingw,那么它的GCC编译器工具链会在Windows下使用.lib文件调整用于各种Windows特定库。
答案 3 :(得分:0)
根据我在微软网站上发现的内容,Comctl32.dll是您需要找到的库,并将其路径添加到您的构建环境中。看看是否有效。
答案 4 :(得分:0)
我一直在遭遇同样的问题。原来,这台电脑有两个不同的MSVC版本(7.1和8.0)。尽管SDK是针对8.0构建的,但它在QtCreator Tools-> Options-> Qt4-> Qt4版本中被选为7.1。所以我把它切换到8.0版,现在工作正常。