0

我有一个 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 并不是我真正需要帮助的地方。

4

5 回答 5

4

似乎命令行被低估了:

"/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'"

在第二行,引号消失了,链接器将每个单词视为要链接的对象。您可能应该只添加引号(如果是您添加了此参数),即。"\"以(3 个字符代替一个引号)开头和结尾。似乎其他消息来源也表明了这一点,因此请尝试对此进行试验。

于 2009-03-30T21:41:45.150 回答
1

不确定,如果你在这个问题上取得了任何进一步的进展。

我遇到了非常相似的错误,但使用的是 msvc2005(不是 IDE)。我没有任何 link_.exe 实例,因此无法验证您的修复。

当我启用控制台(CONFIG += 控制台)时,由于其他问题,它无法链接 - 找不到入口点:

Fatal Error LNK1561: Entry Point Must Be Defined

我随机发现http://support.microsoft.com/kb/140597 其中谈到了尾随反斜杠字符,认为它是针对 msvc 4 的,后来修复了。我检查了我的代码,当在 .pro 文件中指定 LIBPATH 时,我有尾部正斜杠。我修复了这些,并得到了编译(CONFIG += 控制台)的东西。现在我删除了该选项,并且遇到了不同但有点合乎逻辑的问题:

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"

导致这个问题。虽然它可能会有所不同。

请注意,我CONFIG -= embed_manifest_exe的 .pro 文件中也有。我的 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。(来自 4.5.1 商业版的 qmake)

于 2009-05-31T00:54:59.233 回答
0

我的印象是 Qt 的免费版本只能用 Mingw 构建,而不是 Visual Studio。如果您使用的是 Qt 的免费版本,这可能是问题所在。如果您不熟悉 Mingw,它的 GCC 编译器工具链经过调整,可在 Windows 下使用,其 .lib 文件适用于各种 Windows 特定库。

于 2009-03-25T16:17:34.377 回答
0

根据我在 Microsoft 网站上找到的内容,Comctl32.dll 是您需要找到的库,并将其路径添加到构建环境中。看看这是否有效。

于 2009-03-25T16:22:38.187 回答
0

我一直在遭受同样的问题。原来这台电脑有两个不同的 MSVC 版本(7.1 和 8.0)。虽然 SDK 是为 8.0 构建的,但在 QtCreator Tools->Options->Qt4->Qt4 Versions 中为 7.1 选择了它。所以我将它切换到 8.0 版,现在它工作正常。

于 2009-06-18T10:19:58.843 回答