国产精品天干天干,亚洲毛片在线,日韩gay小鲜肉啪啪18禁,女同Gay自慰喷水

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

C語言----創(chuàng)建工程庫最佳選擇(CSEN-e小白管理員-Half_word編寫)

2020-05-24 17:31 作者:e小白官方  | 我要投稿

咕咕咕,這陣子事情有點多… …

===========================================================

正文:

C語言----創(chuàng)建工程庫最佳選擇

??前陣子有童鞋問:“我寫了一些功能很不錯的代碼;結(jié)果做課設(shè)了同學(xué)過來找我想借用,但是我又不想開源它們……?!庇谑且鰜斫裉斓闹鹘?strong>”靜態(tài)庫”or”動態(tài)庫”。

??先簡單進行一下科普:

1.靜態(tài)庫和動態(tài)庫是什么?

動態(tài)庫:動態(tài)庫提供了一種方法,使進程可以調(diào)用不屬于其可執(zhí)行代碼的函數(shù)。函數(shù)的可執(zhí)行代碼位于一個 DLL 文件中,該 DLL 包含一個或多個已被編譯、鏈接并與使用它們的進程分開存儲的函數(shù)。DLL 還有助于共享數(shù)據(jù)和資源。多個應(yīng)用程序可同時訪問內(nèi)存中單個 DLL 副本的內(nèi)容。

靜態(tài)庫:靜態(tài)庫是指在我們的應(yīng)用中,有一些公共代碼是需要反復(fù)使用,就把這些代碼編譯為“庫”文件;在鏈接步驟中,將從庫文件取得所需的代碼,復(fù)制到生成的可執(zhí)行文件中的這種庫。

?

不難看出,動態(tài)庫貌似是一個大的“花心蘿卜”,明明只有一個副本,卻讓同時訪問的進程都以為這是它獨有的庫,最后運行的時候才進行載入。沒錯,這操作就是Windows專業(yè)手法;每個在windows上運行的進程也以為它獨占了整個內(nèi)存(實際上那都是線性地址)。

靜態(tài)庫相比之下就老實多了:每個使用它的進程都直接復(fù)制一份所需的代碼,大家在生成可執(zhí)行文件之前就明確了一一對應(yīng)的關(guān)系。

上述兩種庫也體現(xiàn)出軟件工程對于空間與時間的一種平衡取舍,靜態(tài)庫犧牲了空間,贏得了空間;動態(tài)庫反之。另外值得一提的是使用動態(tài)庫的程序不能離開動態(tài)庫;所以經(jīng)常在Windows下可以看到報錯:缺少xx.dll。而靜態(tài)庫生成的程序就不存在這種限制了,為嘛?人家在運行之前加載進了程序。

2. 如何構(gòu)建?

作為一個C語言熱愛分子表示,做這種東西小菜一碟!

巴特,首先你得有一個運行環(huán)境……

本文主要以Windows與Linux兩大系統(tǒng)為例(MCU小伙伴莫慌,Keil也可以使用lib文件的;傳送門:https://blog.csdn.net/yunfeiyang62/article/details/47211209

Linux:

首先講Linux,比起Windows來使用,因其操作更加簡單。首先裝機必備gcC;然后創(chuàng)建一個頭文件(存放你的各種定義,以及函數(shù)原型聲明);然后再將你的函數(shù)實現(xiàn)寫入另外一個.c文件。

如下圖1:

CSEN-e小白管理員-Half_word編寫

Windows:

作為微軟主要的陣地,首先你得準備好一個VS2019(其它版本也可以,或者直接Keil)。

還是和linux里面一樣建立一個頭文件與.c文件。先保存好;再打開VS創(chuàng)建一個靜態(tài)庫工程或者是一個動態(tài)庫工程。

庫項目直接寫在里面你的庫函數(shù),官方給了一套模板,要是覺得名字不好聽右鍵>重命名(記得將頭文件一并修改,還有將項目屬性里面的也一并修改)

最后在工程目錄的DEBUG目錄下找到生成的.lib或.dll;取出并且與頭文件一并打包。

3.如何使用?

由于Windows下使用較為復(fù)雜(keil中比VS來的簡易),用文字描述過于繁瑣

筆者給出傳送門https://www.bilibili.com/video/BV1Kt411775b,自行探索。

仍然以Linux為例:

將你的.a與.so都用mv指令移動到/usr/lib/下;然后輸入ldconfig建立連接關(guān)系。

創(chuàng)建一個mian.c,用#include “HelloH.h”包含前面寫的頭文件,然后把你需要的函數(shù)調(diào)用就好了。保存。

再輸入:gcc -I./ main.c -lHello -o LibMain.out//使用靜態(tài)庫

? ? ? ? ? ? ?? gcc -L./ main.c -lHi -o SoMain.out//使用動態(tài)庫

接著就可以執(zhí)行查看效果了。

4. 如何分享?

其實說到這個,我們不妨打開電腦上隨意一個程序得安裝路徑,可以看到:一堆的.dll或者.lib,有的是在lib文件夾中。

如果想給別人使用就創(chuàng)建兩個文件夾吧include、lib;頭文件送入include,庫文件則放在lib。最后寫個README,壓縮出包,大功告成!


C語言----創(chuàng)建工程庫最佳選擇(CSEN-e小白管理員-Half_word編寫)的評論 (共 條)

分享到微博請遵守國家法律
和平区| 通化市| 昭平县| 青龙| 诸城市| 琼结县| 阳信县| 锡林浩特市| 遂昌县| 民丰县| 抚顺县| 岗巴县| 绥棱县| 嘉祥县| 沧源| 滨海县| 云和县| 凤山县| 淮北市| 松潘县| 从江县| 南投市| SHOW| 日照市| 博客| 田林县| 三都| 松阳县| 海安县| 南江县| 吴桥县| 漯河市| 宜宾市| 台北县| 仪征市| 新巴尔虎左旗| 双牌县| 白水县| 太原市| 启东市| 德安县|