1. 程式人生 > >C++引用C的靜態庫

C++引用C的靜態庫

作業系統:Linux 

專案中使用的語言是C++, 客戶給的靜態庫是用c語言封裝的,編譯時一直報錯:undefined reference to "xxxxxxxxxxxx".

經過查詢得出原因有兩點:

1. c++ 與 C 引用靜態庫標頭檔案的時候,沒有新增 extern "C" {  xxxxxxxx.h }

原因:C++ 有多型,編譯時函式名和引數會聯合起來,C語言沒有,所有C++ 在呼叫C的靜態庫時,用extern C 告知編譯器。

2.但是用extern “C” 之後 編譯時依舊報錯。經過大半天的除錯最後發現,是客戶給的靜態庫裡有些介面沒有實現,這真是汗汗汗!!!