在使用Makefile進行項目編譯時出現了這個問題,解決的方法是在編譯語句中添加-std=c++11
,在鏈接語句不需要添加。
注意: 你的編譯器必須要支持C++11,如果編譯器不支持,請升級你的編譯器或修改程序代碼避開C++11中的纔有的內容!
#"\"代表換行符號,不換行的話,一行太長不方便看
#設置參數
LIB_DIR = 庫的路徑;
#.c編譯生成對應.o文件 (std=c++11 添加在此)
OBJECTS.o : SOURCES.cpp
g++ -std=c++11 -c SOURCES.cpp -o OBJECTS.o
#.o鏈接庫生成程序文件
#其中:$@指代前面的$(PROGRAM),$<指代後面的$(OBJECTS)
PROGRAM.out : OBJECTS.o
g++ -o $@ $< -static \
-lavformat -L${LIB_DIR}/libavformat/ \
-lavutil -L${LIB_DIR}/libavutil/ \
-lpthread -ldl -lz -lm -lrt
以下內容轉載自:
這個錯誤提示有點迷惑性,意思是nullptr在當前作用域沒有被聲明,就好像是變量沒有聲明一樣的。實際上,nullptr是C++11引入的關鍵字,這個編譯器沒有支持C++11。出現這個錯誤說明你的編譯器沒有支持C++11,至少沒有完整支持C++11。
問題清楚了,就好解決了。解決的方法有兩個方向:
1.設置編譯器或升級編譯器到gcc4.8.1,完全支持C++11
詳細內容請看原文:nullptr was not declared in this scope
2.改代碼,不要使用C++11特性