dev-c++創(chuàng)建lib(靜態(tài)鏈接庫(kù))文件的實(shí)現(xiàn)步驟
雖說(shuō)dev-c++適合初學(xué)者,但是它的功能還是很強(qiáng)大的。那如何用它制作一個(gè)lib(靜態(tài)鏈接庫(kù))呢?
第一步:制作靜態(tài)鏈接庫(kù)
1.打開(kāi)dev-c++,選擇“新建-項(xiàng)目”,如下圖所示。

2.選擇“Static Library”,并選擇編程語(yǔ)言(c和c++無(wú)所謂)以及給項(xiàng)目設(shè)置名稱。

3.選擇你要保存的位置。

4.在新建的文件里添加函數(shù),我這里添加了兩個(gè):一個(gè)叫hello,用來(lái)彈出一個(gè)對(duì)話框;一個(gè)叫add,返回兩個(gè)數(shù)的和。

5.保存文件(文件名可以隨便選,我這里選擇了main.cpp)

6.點(diǎn)擊“編譯”按鈕。

編譯完成后,可能會(huì)出現(xiàn)以下界面:

這時(shí),有人會(huì)覺(jué)得很奇怪:“我的程序沒(méi)問(wèn)題呀,為什么它報(bào)錯(cuò)呢?????”
仔細(xì)一看,它只不過(guò)是把使用的命令給顯示了一遍,而不是報(bào)錯(cuò)。
7.在生成的文件中找到一個(gè).a文件(我這里是hello.a,因?yàn)轫?xiàng)目名是hello,你的可能不一樣),這就是生成的靜態(tài)鏈接庫(kù)文件。

第二步:鏈接靜態(tài)鏈接庫(kù)
庫(kù)做好了,但是我們編程的時(shí)候怎么用它呢?方法就是鏈接。在自己的代碼中鏈接靜態(tài)鏈接庫(kù),有兩種方法,各有優(yōu)劣。
方法一:使用項(xiàng)目
1.新建一個(gè)console application項(xiàng)目。(不能是源代碼,必須是console application,如果你像我一樣不喜歡console application,請(qǐng)使用方法二)

2.選擇保存位置。

3.打開(kāi)“項(xiàng)目屬性 -> 參數(shù)”。

4.點(diǎn)擊“加入庫(kù)或?qū)ο?rdquo;,把剛才的庫(kù)加進(jìn)去。

5.點(diǎn)擊“確定”,大功告成!

優(yōu)點(diǎn):
1.只有這個(gè)項(xiàng)目的文件才會(huì)鏈接該庫(kù),別的文件不會(huì)。
2.網(wǎng)上比較常見(jiàn)。
缺點(diǎn):
1.只能新建console application,不能新建源代碼。(說(shuō)實(shí)話,我非常不喜歡console application)
因此,這種方法適合鏈接不太常用的庫(kù)。
方法二:修改編譯選項(xiàng)
1.將自己的庫(kù)重命名,命名為“libxxx.a”,例如“libhello.a”。

2.新建一個(gè)源代碼(這回不用console application了,我好開(kāi)心!)

3.打開(kāi)“工具 -> 編譯選項(xiàng)。”

4.找到“在連接器命令行加入以下命令”,在那個(gè)框里加入以下命令(如果框里已經(jīng)有命令了,就在末尾加一個(gè)空格,再輸入下面的命令):
-l你的庫(kù)名(去掉開(kāi)頭的lib和結(jié)尾的.a)
舉個(gè)例子:我的庫(kù)名是libhello.a(見(jiàn)第1步),那么我應(yīng)該加上命令:
-lhello
注意,以下3種寫法都是錯(cuò)誤的:
-llibhello.a -llibhello -lhello.a
再比如,你的庫(kù)名是libtest.a,你應(yīng)該加上:
-ltest
示例圖(以我的庫(kù)為例):

能不能在-l和庫(kù)名之間加一個(gè)空格呢?當(dāng)然可以!
5.還沒(méi)完!找到“目錄 -> 庫(kù)”。

6.把你的庫(kù)的路徑添加進(jìn)去。怎么添加?點(diǎn)擊右下角的“瀏覽”按鈕,找到庫(kù)的路徑,點(diǎn)“確定”。

7.點(diǎn)“添加”,再點(diǎn)“確定”,OK!

優(yōu)點(diǎn):
1.可以新建源代碼,而不是我討厭的console application。。。
缺點(diǎn):
1.每次會(huì)自動(dòng)鏈接該庫(kù),導(dǎo)致可執(zhí)行文件體積巨大。
2.網(wǎng)上不常見(jiàn),遇到了問(wèn)題很難解決。
因此,這種方法適合經(jīng)常使用的庫(kù)。
第三步:使用庫(kù)函數(shù)
萬(wàn)事俱備,只欠東風(fēng)!庫(kù)也造好了,鏈接也鏈接了,就差調(diào)用庫(kù)函數(shù)了!怎么調(diào)用呢?還是有兩種方法。
注意:如果你是在console application中鏈接靜態(tài)鏈接庫(kù),則你只能在項(xiàng)目文件中調(diào)用庫(kù)函數(shù);如果你修改了編譯選項(xiàng),則每一個(gè)程序都可以調(diào)用庫(kù)函數(shù)!
方法一
1.在需要調(diào)用庫(kù)函數(shù)的代碼里,寫出庫(kù)函數(shù)的函數(shù)原型。(必須寫函數(shù)原型,否則會(huì)報(bào)錯(cuò)!)

2.直接調(diào)用函數(shù)即可。(下圖為完整代碼)

#include <cstdio>
void hello();
int add(int a,int b);
int main(){
printf("%d",add(1,2));
hello();
return 0;
}運(yùn)行效果:

優(yōu)點(diǎn):操作簡(jiǎn)單。
缺點(diǎn):只有你自己知道函數(shù)原型,如果別人使用此函數(shù),就不得不向你詢問(wèn)函數(shù)原型。
因此這種方法適合自己使用庫(kù)函數(shù)。
方法二:
1.把函數(shù)原型寫在一個(gè)頭文件里。

2.引入頭文件,就可以使用庫(kù)函數(shù)了!

優(yōu)點(diǎn):別人可以知道函數(shù)原型。
缺點(diǎn):比較麻煩。
因此,這種方法適合共享給別人。
到此這篇關(guān)于dev-c++創(chuàng)建lib(靜態(tài)鏈接庫(kù))文件的實(shí)現(xiàn)步驟的文章就介紹到這了,更多相關(guān)dev-c++創(chuàng)建lib內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
詳解C語(yǔ)言如何實(shí)現(xiàn)雙向帶頭循環(huán)鏈表
雙向帶頭循環(huán)鏈表應(yīng)該是鏈表中非常方便的一種,可以很容易的在任意位置上進(jìn)行插入和刪除,可以很容易的對(duì)鏈表進(jìn)行管理。本文將利用C語(yǔ)言實(shí)現(xiàn)雙向帶頭循環(huán)鏈表,需要的可以參考一下2022-08-08
C語(yǔ)言實(shí)現(xiàn)小貓釣魚(yú)游戲
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)小貓釣魚(yú)游戲,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-01-01
Qt實(shí)現(xiàn)字幕滾動(dòng)效果的示例代碼
這篇文章主要介紹了Qt如何利用QTimer實(shí)現(xiàn)字幕滾動(dòng)功能,并且可以實(shí)現(xiàn)自行更改文本內(nèi)容、自適應(yīng)文本大小、自由調(diào)整速度等功能,感興趣的可以學(xué)習(xí)一下2022-06-06
c語(yǔ)言實(shí)現(xiàn)詞頻統(tǒng)計(jì)的簡(jiǎn)單實(shí)例
下面小編就為大家?guī)?lái)一篇c語(yǔ)言實(shí)現(xiàn)詞頻統(tǒng)計(jì)的簡(jiǎn)單實(shí)例。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-09-09
詳解C++中的內(nèi)聯(lián)函數(shù)和函數(shù)重載
這篇文章主要介紹了詳解C++中的內(nèi)聯(lián)函數(shù)和函數(shù)重載,是C++入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下2015-09-09
c++類型轉(zhuǎn)換及RTTI運(yùn)行階段類型識(shí)別
這篇文章主要為大家介紹了c++類型轉(zhuǎn)換及RTTI運(yùn)行階段類型識(shí)別詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪2023-05-05
C++示例分析內(nèi)聯(lián)函數(shù)與引用變量及函數(shù)重載的使用
為了消除函數(shù)調(diào)用的時(shí)空開(kāi)銷,C++ 提供一種提高效率的方法,即在編譯時(shí)將函數(shù)調(diào)用處用函數(shù)體替換,類似于C語(yǔ)言中的宏展開(kāi)。這種在函數(shù)調(diào)用處直接嵌入函數(shù)體的函數(shù)稱為內(nèi)聯(lián)函數(shù)(Inline Function),又稱內(nèi)嵌函數(shù)或者內(nèi)置函數(shù)2022-08-08

