![](/img/trans.png)
[英]How can I use the library that I have built without error from source, but not compiling for my own project?
[英]How do I link a library to my project in CodeBlocks & GCC without adding the library source to my project
我正在編寫一個使用hashlib ++庫的程序(或將使用它),但是我不想將所有源文件都添加到我的項目中,因為它很大。 無論如何,有沒有鏈接到hashlib ++源文件的鏈接,以便我可以在項目中使用它? 我試圖用一個簡單的直接鏈接到標題
#include "path/to/hashlibpp.h"
但是,當我嘗試從庫中調用任何函數時,都會收到一個漂亮的錯誤。 例如:
undefined reference to `sha1wrapper::sha1wrapper()
我正在使用Code :: Blocks IDE和GCC編譯器。
首先,您必須在計算機上安裝該庫,該庫已經編譯為靜態或動態庫文件。 您可以從源代碼安裝,也可以找到適用於您的OS的預構建軟件包(取決於您所使用的OS)。 您將需要知道庫的名稱。
對於hashlib ++,他們在自述文件中提供了從源代碼構建靜態庫的說明; 請參閱第3.2節。
在大多數情況下,動態鏈接是最佳選擇。 這意味着庫在運行時與庫鏈接,而不是在編譯時將庫添加到可執行文件中(這會使可執行文件更大)。
不幸的是,根據他們的README.txt文件,hashlib僅作為靜態庫提供,這限制了您的選擇。
使用gcc在命令行上編譯程序時,“-l”選項鏈接到庫中:
gcc -o MyProg -lhl++ MyProg.c
當使用諸如Code :: Blocks之類的IDE時,通常必須指定要鏈接的庫。 有關如何使用Code :: Blocks執行此操作的詳細信息,請參見此答案 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.