簡體   English   中英

Makefile:將庫添加到另一個項目

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM