[英]Makefile: add library to another project
我想更改一個現有的makefile,以包括我自己創建的另一個靜態庫。 我遵循一些指示來制作圖書館。 它當前包含除main.o
之外的所有.o
文件。 讓我們叫我的庫libABC.a
。 如果有所作為,則我要修改的程序包是用C ++編寫的,而我包含的庫是用C編寫的。
到目前為止,我已經將-lABC
添加到我的庫列表中,並將該庫與其他庫放在同一目錄中,這樣我就不必添加另一個-L
命令。 我已將所有頭文件移動到包的/include
目錄(不確定是否必須執行此操作),因此可以避免添加另一個-I
命令。 按原樣進行編譯不會給我帶來任何錯誤,但是如果我嘗試為該庫中的頭文件之一添加#include
命令並調用一個函數,則會得到undefined reference to function()
錯誤的undefined reference to function()
。
關於我能做什么的任何想法?
由於該程序包是用C ++編寫的,而您的庫是用C語言編寫的,因此您可能需要使用extern "C"
鏈接,因為C ++可能希望對符號進行名稱修改。
最簡單的方法是將C函數定義包裝在extern "C"
塊的標頭中,例如:
#ifdef __cplusplus
extern "C" {
#endif
int myFunction();
int someOtherFunction(char *);
#ifdef __cplusplus
} // extern "C"
#endif
確保只在塊中包裝您自己的函數定義; 您在標頭中#include
所有外部庫都應位於該塊之外。
另請參閱: 在C ++源代碼中,外部“ C”的作用是什么?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.