最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(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編寫)的評論 (共 條)

分享到微博請遵守國家法律
阆中市| 济宁市| 台山市| 海城市| 陈巴尔虎旗| 昔阳县| 昌平区| 砚山县| 神农架林区| 唐河县| 宜黄县| 藁城市| 江永县| 苏尼特左旗| 洛浦县| 固阳县| 宜宾县| 久治县| 广昌县| 察雅县| 龙泉市| 山丹县| 乐平市| 曲松县| 安徽省| 三穗县| 铁岭县| 光山县| 申扎县| 同心县| 建平县| 嘉禾县| 环江| 乐安县| 丹巴县| 邢台县| 天长市| 望城县| 灌南县| 临颍县| 祁阳县|