簡體   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