7

我正在尝试第 n 次从源代码编译 qt,这次使用选项 configure -release -platform-win32 但我遇到了错误:
在此处输入图像描述

任何人都知道如何解决它?
谢谢。

4

5 回答 5

7

当使用 MinGW 编译器(可能是任何 gcc 编译器)编译 Qt 时,您可能会遇到此问题,该编译器默认编译启用 C++11 标准的 C++ 程序。

第 3 方库 JavaScriptCore 尝试定义一些“规范化”has_trivial_constructor和相关模板的包装器,但显然它尚未更新以处理 GCC 的更新以合并完整的 C++11 标准。

mkspecs\win32-g++\qmake.conf修复方法是使用默认情况下不启用 C++11 功能的 MinGW 编译器,或者通过编辑将-std=gnu++98选项添加到 C++ 构建来关闭它们:

QMAKE_CXXFLAGS = $$QMAKE_CFLAGS -std=gnu++98
#                               ^^^^^^^^^^^^
于 2013-06-23T19:06:07.773 回答
3

如果您使用的是 gcc 4.7,则您可以访问大部分 C++11(如果您使用)进行编译,-std=c++11或者您可以在此处查看命名空间-std=gnu++11下支持的功能。子命名空间用于现在已成为标准的草案。stdtr1

于 2012-04-27T16:33:05.047 回答
1

您可以用std::tr1::has_trivial_constructorC++11 标准化的std::is_trivially_constructible. 请参阅http://www.cplusplus.com/reference/type_traits/is_trivially_constructible

于 2016-07-29T09:39:16.330 回答
0

尝试(包含在宏中#include <type_traits>)添加 #include <tr1/memory>TypeTraits.h

于 2014-05-01T10:23:23.253 回答
0

我能够解决这个问题只是把

QMAKE_CXXFLAGS += -std=gnu++98

在 src/script/script.pro 中。我希望编译一些编译单元 c++-11 和其他 gnu++98 不会造成任何问题。

于 2022-02-04T01:14:40.500 回答