如何製作及鏈結靜態鏈結庫。

2021-04-06 19:04:43 字數 2253 閱讀 7377

1.靜態鏈結庫的生成

在vc++6.0中新建專案的project選項卡中選擇win32 static library,將原檔案及標頭檔案新增到相應的資料夾中,編譯鏈結一下,如果沒有錯誤就會自動生成.lib檔案了。

2.靜態鏈結庫的鏈結

將下列語句新增到頭檔案中:

#pragma comment(lib,"***.lib")

之前要確認***.lib是否在當前的目錄下,或者在vc指定的lib庫的路徑中。你也可以手動新增自己的lib庫的路徑,方法如下:

工具--〉選項--〉directory --〉 在include file中新增include 標頭檔案的路徑

在library file中新增lib庫的路徑。

然後再像上邊那樣寫,就不用擔心路徑的問題啦……

當然,標頭檔案還是要包含的啊。

3、在linux中如何生成:

這是第八章,八這個數字很多人都喜歡。我也一樣。(感覺好迷信啊。)這一章我們要來製作靜態鏈結庫,我相信各位一定會很高興的。

首先我先簡單介紹一下靜態鏈結庫的作用。我們知道,c/c++程式生成目標**的過程有,編寫**,編譯**,連線**,生成目標**。在連線**的時候,會將編譯後的二進位制**連線成目標**。但是,有些時候。我們想讓程式匯入必要的**,而不想匯入無用的**到我們的程式中。我們該如何呢?很簡單,使用靜態連線庫。使用它我們就可以實現將在程式中使用的函式匯入的目的。

下面我們來一步步的學做靜態鏈結庫並且學會如何使用。

我們現在先寫一段**,你可以用dev也可以用記事本也可以用任何你喜歡的文字編輯器。像我就比較喜歡vi或者emacs作為平時的文字編輯器。話說遠了,現在言規正傳。我們寫下下面的**。

//helloworld.c

#i nclude

void helloworld(void)

上面那段c**各位應該很熟悉的吧,那麼經典的hello world好讓我懷念啊。儲存為helloworld.c以後我們就開始生成了。

首先,我們先編譯helloworld.c

gcc -c helloworld.c -o helloworld.o

這樣我們得到乙個二進位制的檔案helloworld.o

接著我們生成靜態庫。

ar cqs libhelloworld.a helloworld.o

這樣我們黨額靜態鏈結庫就好了。如果有需要可以將其他的二進位制檔名加helloworld.o的後面將他們連線成乙個靜態鏈結庫。另外,生成的靜態庫檔名必須為lib*.a

好了,現在我們來使用我們的庫吧。

接下來,我們為了能夠使用方便,寫乙個如下標頭檔案。

//helloworld.h

void helloworld(void);

接著我們開始使用我們剛才生成的靜態庫。寫乙個main.c的檔案。

//main.c

#i nclude "helloworld.h"

int main(void)

使用gcc編譯,假設我們這裡所有的檔案都儲存在同乙個目錄下。

gcc -c main.c -o main.o

然後我們連線程式。

gcc main.o -o main.exe -l"./" -lhelloworld

如果順利我們會得到乙個main.exe的檔案。

在控制台下輸入main.exe或者main就可以出現 hello world 這組單詞。

當然,如果你要在dev下使用靜態連線庫,也是可以的。方法我在上一章已經說過了。只是,如果你要使用自己的庫必須設定路徑。

只要在聯結器引數中新增 -l"你的庫的所在的資料夾" 或者 將你的庫儲存到dev安裝目錄中的lib目錄中。

問外音:

這篇文章其實我真的很喜歡,不是文章喜歡,而是內容很喜歡。不知道各位如何想。這裡介紹了乙個生成靜態庫的方法,感覺比vc生成的要簡單。其實在gcc的linux平台下生成動態連線庫還要比vc下生成不知道要簡單多少倍了。如果說win32中用於開發最好的平台是win2000那麼,在那麼x86系統中用於開發的平台莫過於linux了。這章的內容也許對許多的程式設計師都有些陌生,我實在擔心各位會在實踐中會碰到問題,所以在這裡還是希望各位在遇到困難時多到這裡提問。最後還是我的一句名言:不論是程式還是思想唯有通過不斷的交流才能愈加完善。(看過《古畑任三郎》麼?主角總喜歡在發表觀點後,說一句:我是古畑任三郎。感覺我也和他一樣了。不過,這的確是一部不錯的影片。至少比國內許多偵探片都好,沒有額外的劇情,沒有你你我我的愛情。純粹是從乙個破案的角度來拍攝的。推薦各位看看。)

如何製作及鏈結靜態鏈結庫

1.靜態鏈結庫的生成 在vc 6.0中新建專案的project選項卡中選擇win32 static library,將原檔案及標頭檔案新增到相應的資料夾中,編譯鏈結一下,如果沒有錯誤就會自動生成.lib檔案了。2.靜態鏈結庫的鏈結 將下列語句新增到頭檔案中 pragma comment lib,li...

動態鏈結庫 靜態鏈結庫

包含標頭檔案和庫 idir 指定編譯查詢標頭檔案的目錄,常用於查詢第三方的庫的標頭檔案,例 gcc test.c i.inc o test。ldir 指定鏈結時查詢lib的目錄,常用於查詢第三方庫。llibrary 指定額外鏈結的lib庫 巨集定義 dmacro 以字串 1 預設值 定義 macro...

靜態鏈結庫 動態鏈結庫

庫是寫好的現有的,成熟的,可以復用的 現實中每個程式都要依賴很多基礎的底層庫,不可能每個人的 都從零開始,因此庫的存在意義非同尋常。本質上來說庫是一種可執行 的二進位制形式,可以被作業系統載入記憶體執行。庫有兩種 靜態庫 a lib 和動態庫 so dll windows上對應的是.lib dll ...