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