vs2013编译用于调试但不用于发布?

时间:2014-11-07 14:00:20

标签: qt visual-c++

我在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。有什么想法吗?

3 个答案:

答案 0 :(得分:7)

在使用Qt5.4和msvc2013构建项目时,我遇到了相同的编译错误。这是因为windows标头违反了标准,它将通过在.pro文件中添加以下行来修复:

win32: QMAKE_CXXFLAGS_RELEASE -= -Zc:strictStrings

答案 1 :(得分:1)

我终于找到了原因:

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

虽然对于那些使用Windows和vs 2013的人来说可能没那么有用,但请避免使用qt 5.4 beta版。

答案 2 :(得分:1)

将此行添加到.pro文件

win32: QMAKE_CXXFLAGS_RELEASE -= -Zc:strictStrings

当您的代码包含违反strictStrings规则的外部.h文件时,您仍然会收到错误。

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