繁体   English   中英

错误:C2057:预期常量表达式

[英]error: C2057: expected constant expression

我正在尝试构建一个原本在mingw之上制作的项目,但现在我们需要切换到MSVC ++(因为特定的调试库仅支持该功能),但是令我惊讶的是,即使在新的C ++版本/ Qt上编译该代码也会导致错误:

错误:C2057:预期常量表达式

该错误不是我自己的源代码的一部分,而是来自qmetatype.h标头的Qt本身,所以我不知道如何解决。 我以为它缺少C ++ 11标志,所以我添加了CONFIG += c++11没有改变。 然后,我尝试更具体,并将QMAKE_CXXFLAGS += /std:c++14.pro文件。 同样的错误。 错误行是:

struct CapabilitiesImpl<T, std::random_access_iterator_tag>
{ enum { IteratorCapabilities = RandomAccessCapability | BiDirectionalCapability | ForwardCapability }; };

注意:由于出现cl找不到错误,因此我从qt.bat文件中给Qt创建者加注标,如下所示:

call "C:\Program Files (x86)\Microsoft Visual
Studio\2017\Community\VC\Auxiliary\Build\vcvarsall.bat" x86
"C:\Qt-MSVC\Qt5.7.1\Tools\QtCreator\bin\qtcreator.exe"

我该如何解决?

更新

我尝试使用一个较旧的版本来查看它是否具有任何区别,但没有,但是我得到了有关该错误的更多信息:

C:\\ Qt-MSVC \\ Qt5.5.0 \\ 5.5 \\ msvc2013 \\ include \\ QtCore \\ qmetatype.h:944:请参见对正在编译的类模板实例'QtMetaTypePrivate :: CapabilitiesImpl,std :: random_access_iterator_tag>的引用C:\\ Qt- MSVC \\ Qt5.5.0 \\ 5.5 \\ msvc2013 \\ include \\ QtCore \\ qmetatype.h:1015:请参见对使用[T = QVariantList] C:\\ Qt-MSVC \\ Qt5.5.0编译的类模板实例'QtMetaTypePrivate :: ContainerAPI'的引用\\ 5.5 \\ msvc2013 \\ include \\ QtCore \\ qvariant.h:711:请参见使用[T = QVariantList]编译的函数模板实例化'QtMetaTypePrivate :: QSequentialIterableImpl :: QSequentialIterableImpl(const T *)'的引用

使用MSVC编译器在QT中进行某些操作时,确实需要定义特定于MSVC的环境变量。 因此,除非您自己手动定义这些环境变量,否则必须运行vcvarsall.bat

VCVarsall.bat是Visual Studio中的Visual Studio命令提示符工具。 它是使您能够为集成开发环境(IDE)设置各种选项以及从命令行构建,调试和部署项目的工具。

资源

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM