2

在尝试与 QT 4.5 版本链接时,我遇到了这个错误消息

致命错误 C1047:对象或库文件 'c:\qt\2009.02\qt\lib\qtmain.lib' 是使用比其他对象更旧的编译器创建的;重建旧对象和库

我一直在为我当前的项目使用相同的编译器来编译 QT 4.5(VS 2005,虽然我不确定是否使用 VS2005 SP1 编译它,但我现在使用的是 SP1)。只有当我正在编译的另一个库启用了 GL(由 VS2005 自动切换到 LTCG)时,这个问题才会出现。如果我禁用所有其他库中的所有优化(这会阻止启用 LTCG),我只能让构建工作

有没有办法让 QT 4.5 与 LTCG 发布构建过程一起使用?如果我必须重新编译,我需要为 nmake 设置哪些标志?

顺便说一句,该项目是使用 QT 4.5 Visual Studio 插件创建的,并且对于发布版本,它自动关闭了 GL。

4

2 回答 2

0

我在尝试在Qwt中构建示例时遇到了类似的问题,并做了与你相同的事情——我从所有 Makefile (Makefile.Release) 中删除了 -GL 开关。有点痛苦,但所有示例现在都运行了。

从这个线程的评论看来,Qt 4.5.0 现在使用 /GL 和 /LTCG 标志。

更新 2010-01-14摆脱整个 -GL / -LTCG 问题的新方法:

编辑C:\Qt\4.5.1\mkspecs\win32-msvc2008\qmake.conf(或与您的 MSVC 版本对应的那个)并更改行

QMAKE_CFLAGS_RELEASE    = -O2 -MD -GL

QMAKE_CFLAGS_RELEASE    = -O2 -MD

QMAKE_LFLAGS_RELEASE    = /INCREMENTAL:NO /LTCG

QMAKE_LFLAGS_RELEASE    = /INCREMENTAL:NO

现在,任何创建的 Makefile 都不会出现这些标志。

更新 2010-03-22看来 Qt 4.6.1 已修复原始问题。试一试。

于 2009-09-03T20:30:43.250 回答
0

仔细查看 QT 4.5 的编译选项,有一个启用 LTCG 的标志。默认情况下禁用。

于 2009-10-29T02:44:58.307 回答