【问题标题】:QT 4.5 - How do I enable LTCG in VS2005 when linking to QT libraries?QT 4.5 - 链接到 QT 库时如何在 VS2005 中启用 LTCG?
【发布时间】:2009-08-18 12:02:42
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

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

    thread 中的 cmets 看来,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 已修复原始问题。试一试。

    【讨论】:

    • 我使用的是 Qt 4.5.0,这让我很沮丧
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2015-09-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-30
      • 1970-01-01
      相关资源
      最近更新 更多