天天看點

linux c++ undefined reference Why do we need extern “C”{ #include <foo.h> } in C++? 另外,即使程式滿足c++文法,但檔案的字尾為.c,那麼g++也會将其視作c語言來編譯,也可能導緻相同的問題。最好将字尾改為cpp或者cc來編譯,注意先clean一下以有的.o檔案。

一個c++工程中用到了自己寫的c靜态庫。但是makefile檔案怎麼改都不對,老是undefined reference的問題。

看了這篇文章,undefined reference問題總結 發現c++程式在調用c庫的時候,其頭檔案要被 extern "C" 包圍。

又簡單查了一下原因,這裡說得很清楚:

Why do we need extern “C”{ #include <foo.h> } in C++?

另外,即使程式滿足c++文法,但檔案的字尾為.c,那麼g++也會将其視作c語言來編譯,也可能導緻相同的問題。最好将字尾改為cpp或者cc來編譯,注意先clean一下以有的.o檔案。

繼續閱讀