【问题标题】:vs2013 compile for debug but not for release?vs2013 编译用于调试但不用于发布?
【发布时间】:2015-06-03 18:29:49
【问题描述】:

我在VS2013中遇到了奇怪的事情。 我的程序在调试模式下构建良好。 但是在发布模式下,有很多错误,比如:

 Error 2 error C2440: 'default argument' : cannot convert from 'const wchar_t [1]' to 'const BSTR'   (src\GAudioOutput.cc) C:\Program Files (x86)\Windows Kits\8.1\Include\um\sapi.h 16917 1 qgroundcontrol

这是vs 2013 express版的最新版本。我昨天刚拿到。 这是vs2013的错误吗? 有什么解决办法吗? 编辑:所有错误都是 C2440:无法从 xxx 转换为 xxx

EDIT2:我使用 VS2010 编译的相同代码没有任何问题。我发现所有的错误都来自 windows_kit 8.1。有什么想法吗?

【问题讨论】:

  • 比较调试和发布的构建设置。可能您正在将一个编译为 Unicode,另一个编译为 ascii。
  • 可能您在调试版本而不是发布版本中添加了一些预处理器指令。我将从比较两个版本的项目设置开始。
  • 抱歉,去哪里检查?
  • 抱歉,在哪里检查? 项目配置属性的“常规”选项卡中的字符集。
  • 他们是一样的...

标签: qt visual-c++


【解决方案1】:

在使用 Qt5.4 和 msvc2013 构建项目时,我遇到了同样的编译错误。是因为windows的header违反了标准,在.pro文件中加入下面一行来修复:

win32: QMAKE_CXXFLAGS_RELEASE -= -Zc:strictStrings

【讨论】:

    【解决方案2】:

    终于知道原因了:

    我正在使用最新的 Qt 5.4 beta。 Qt 5.4 beta 中存在一个错误,导致 VS2013 发布版本中生成的项目停止工作。

    虽然它可能对其他人没有太大帮助,那些使用 windows 和 vs 2013 的人,请避免使用 qt 5.4 beta 版本。

    【讨论】:

    • 这只是关于测试版软件的一般评论 - 如果您使用的是测试版软件,那么到公共用户组寻求帮助会适得其反。相反,它会看到该测试版的支持站点将是对支持最有帮助的语言环境。
    【解决方案3】:

    将此行添加到 .pro 文件中

    win32: QMAKE_CXXFLAGS_RELEASE -= -Zc:strictStrings
    

    当您的代码包含违反严格字符串规则的外部 .h 文件时,您仍然会收到错误消息。

    更好的方法是从条目中删除 -Zc:strictStrings 文件 $QT_DIR/mkspecs/win32-msvc2013/qmake.conf 中的 QMAKE_CFLAGS_RELEASE 和 QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-19
      • 2014-05-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多