回答
如果你正在使用gcc 4.7,你可以訪問大多數的C++ 11,如果你有-std=c++11
或-std=gnu++11
你可以在std
命名空間here檢查出支持的功能編譯。 tr1
子命名空間適用於現在已經制定標準的草案。
使用MinGW編譯器(可能是任何gcc編譯器)編譯Qt時,可能會遇到此問題,該編譯器默認啓用C++ 11標準來編譯C++程序。
第三方庫JavaScriptCore試圖定義一些'正常化'包裝和相關模板,但顯然它尚未被更新以處理GCC的更新以包含完整的C++ 11標準。
的解決方法是使用MinGW的編譯器不支持C++ 11個功能默認情況下,或通過編輯mkspecs\win32-g++\qmake.conf
到-std=gnu++98
選項添加到C++來關閉它們構建:
QMAKE_CXXFLAGS = $$QMAKE_CFLAGS -std=gnu++98
# ^^^^^^^^^^^^
很好的答案,在2017年修正了我的qt make(4.8)。 – adgang 2017-07-24 23:45:55
嘗試(包裹在宏周圍#include <type_traits>
)加入 #include <tr1/memory>
在TypeTraits.h
可以更換由C++ 11標準化std::is_trivially_constructible
初步std::tr1::has_trivial_constructor
。請參閱http://www.cplusplus.com/reference/type_traits/is_trivially_constructible。
- 1. Mingw'std :: function'尚未聲明?
- 2. 錯誤:「CvTrackers」尚未聲明
- 3. 「的boost :: Q_FOREACH」尚未聲明
- 4. va_list的尚未聲明
- 5. 錯誤::: STRCMP尚未聲明
- 6. ':: hypot將' 尚未聲明
- 7. strncasecmp和strcasecmp尚未聲明
- 8. 錯誤:'gint'尚未聲明
- 9. 錯誤:'uint8_t'尚未聲明
- 10. 的openmpi:錯誤:「MPI」尚未聲明
- 11. 尚未聲明的字符串變量
- 12. 類型 '文件' 尚未聲明\t jpeglib.h
- 13. qt單元測試QTreeWidgetItem尚未聲明
- 14. JavaScript OOP函數引用尚未聲明
- 15. Eclipse CDT:error:':: wcstold'尚未使用MinGW聲明
- 16. 錯誤:'boost :: Q_FOREACH'尚未聲明
- 17. QSharedPointer VS std :: tr1 :: shared_ptr VS boost :: tr1 :: shared_ptr
- 18. Cygwin的gcc.4.9.2:錯誤: ':: lrintl' 尚未聲明
- 19. 「:: drem尚未聲明」在MinGW/GCC中編譯tvmet庫時
- 20. std :: tr1 :: unordered_map的C++相等
- 21. 'hash'已在此範圍內使用tr1 :: hash聲明;
- 22. std :: tr1 with visual studio 2017
- 23. std :: tr1 :: shared_ptr是否互斥?
- 24. 前綴'xsi'的命名空間尚未聲明
- 25. 錯誤:尚未聲明命名空間前綴「og:image」:XSLT
- 26. 爲Android編譯ICU:錯誤: 'ICU_Utility' 尚未聲明
- 27. GOTO語句引用標籤'QuitWithRollBack',但標籤尚未聲明
- 28. C++編譯錯誤NetBSD':: system'尚未聲明
- 29. 變量初始化並聲明後可能尚未初始化
- 30. std :: tr1 :: unordered_map是否有與std :: map :: lower_bound類似的std :: algorithm?
你使用的是哪個版本的mingw32 gcc - 它確實包含了tr1頭文件嗎? QT的來源絕對包括它所需要的嗎? – Rup 2012-04-27 16:28:00
@Rup我使用gcc 4.7,它看起來像它有這些頭文件 – smallB 2012-04-27 16:29:25
是的,我發現太晚了,它說在輸出中有'win32-g ++ - 4.6'。它試圖使用應該在'type_traits'中聲明的'std :: tr1 :: has_trivial_constructor'。不過看起來它已經試圖包含這一點。你可以在文件中編輯'#if's(或者臨時編寫'#undef'中的一個常量,然後在最後重新定義它),以便使用tr1不可用的代碼。 – Rup 2012-04-27 16:33:26