建立靜態庫 動態庫一定要有標頭檔案嗎?為什麼?

2021-10-11 04:21:48 字數 879 閱讀 9382

不一定需要。建立乙個庫一般處於以下兩種目的:

1、把一些相關的**,打包成乙個庫,發布給其它的人用。

這中情況是最常見的情況,如寫 c 語言用到 libgcc。在這種情況下,你除了提供庫檔案:

靜態庫[ windows 下 .lib,linux .a];動態庫:[windows 下 .dll,linux 下 .so] 之外,

必須提供標頭檔案。標頭檔案是你這個庫裡面提供了那些介面可以供外界使用。

如果沒有標頭檔案,其他人無法使用,因為不知道函式方法的原型!

2、在為某些軟體專案寫外掛程式,而這些專案軟體是公司內部的;或者說自己相對熟悉可接觸的,

即然是可以直接得知可能用到的函式方法的原型(函式名,引數列表,返回值等)的;

就沒有必要單獨列出標頭檔案,直接作為庫使用也是可以的;

很多大的專案,都是模組化設計,留有一些特定的介面,方便定製。當程式執行時,

會動態載入指定目錄下的動態庫,執行時呼叫動態庫裡面約定好的方法。

這種情況無需提供標頭檔案,但要按照特定的約定來實現這個庫。

總之:當呼叫方還不知道不清楚函式原型的時候:動態庫中的函式方法的原型(函式名,引數,返回值等)的情況下;

(1)**編寫時候;

呼叫方是不知道如何使用該庫的,所以是需要標頭檔案幫助,來編寫呼叫**的;尤其是用到了標頭檔案中宣告的類;型別和相關變數,相關函式;

然後庫檔案存在就可以直接呼叫.

(2)**編譯時

如果是靜態呼叫;無論是靜態庫或動態庫,都是需要庫的標頭檔案參加編譯的;

如果是動態載入動態庫(dlopen/load等方法),則不需要標頭檔案,只需要庫檔案.前提是呼叫方知道函式名和引數列表,返回值等資訊,方可正確呼叫;

(3)**執行時

執行時,無論靜態庫還是 動態庫,都不需要標頭檔案;

建立靜態庫 動態庫一定要有標頭檔案嗎?為什麼?

不一定需要。建立乙個庫一般處於一下兩種目的 1 把一些相關的 打包成乙個庫,發布給其它的人用。這中情況是最常見的情況,如寫 c 語言用到 libgcc。在這種情況下,你除了提供庫檔案 靜態庫 windows 下 lib,linux a 動態庫 windows 下 dll,linux 下 so 之外,...

建立靜態庫和動態庫

今天是2014年5月25日。首先我想說一下在linux作業系統中,如何檢視程序和檢視程序樹。要想檢視程序只需敲入ps aux 即可,也可用 top指令,至於它倆的具體區別後面在介紹。用pstree 來檢視程序樹。這裡面有子程序和父程序,一定要會看。下來教你如何匯出核心資訊,和檢視映像。基於剛才的ps...

cmake 新增頭檔案目錄,鏈結動態 靜態庫

羅列一下cmake常用的命令。cmake支援大寫 小寫 混合大小寫的命令。1.新增頭檔案目錄include directories 語法 include directories after before system dir1 dir2 它相當於g 選項中的 i引數的作用,也相當於環境變數中增加路徑...