在尝试与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。
答案 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的标志。默认情况下禁用它。