QT 4.5 - 如何在链接到QT库时在VS2005中启用LTCG?

时间:2009-08-18 12:02:42

标签: visual-studio-2005 qt4 linker linker-errors

在尝试与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。

2 个答案:

答案 0 :(得分:0)

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

thread的评论看,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修复了原始问题。给它一个旋转。

答案 1 :(得分:0)

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