std :: tr1尚未声明

时间:2012-04-27 16:23:52

标签: c++ qt compilation

我正在尝试第n次从源代码编译qt,这次使用选项configure -release -platform-win32 但是我得到了错误:
enter image description here

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

4 个答案:

答案 0 :(得分:6)

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

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

修复是使用默认情况下不启用C ++ 11功能的MinGW编译器,或通过编辑mkspecs\win32-g++\qmake.conf将其添加到C ++版本中来关闭它们: / p>

-std=gnu++98

答案 1 :(得分:2)

如果您使用的是gcc 4.7,那么如果使用-std=c++11-std=gnu++11进行编译,则可以访问大多数C ++ 11,您可以查看std namespace {{tr1下支持的功能。 3}}。 {{1}}子命名空间用于草案,现已成为标准。

答案 2 :(得分:0)

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

答案 3 :(得分:0)

您可以使用C ++ 11标准版std::tr1::has_trivial_constructor替换初步std::is_trivially_constructible。请参阅http://www.cplusplus.com/reference/type_traits/is_trivially_constructible