關於動態庫靜態庫的一些事

2021-07-13 05:08:42 字數 716 閱讀 4270

首先先對編譯器中關於對原檔案,標頭檔案,庫等編譯相關的理解。其次理解靜態庫和動態庫的。最後在windows和linux下編譯靜態和動態庫,以及相應的使用。

編譯器要編譯原始檔,標頭檔案,當然要將原始檔標頭檔案置入工程專案中(標頭檔案不一定,標頭檔案不一定放進工程中,只要保證原始檔include的時候能找到就好,編譯的是原始檔。include的作用其實是將標頭檔案的東西替換到原始檔。所以工程中可以不要包含標頭檔案,但是要保證能找到標頭檔案位置,編譯也能成功。就像gcc中沒有gcc 標頭檔案,只是gcc原始檔。標頭檔案放到vs工程中,只是為了能方便的管理,主要的還是原始檔。),這樣編譯器才能將其編譯,否則相應的錯誤就是當使用某個原檔案的方法時會提示未定義。

使用原始檔,要放進工程,這樣才能編譯。

使用標頭檔案時,除了要放進工程(有的可以不用,如在工程的根目錄下時)1要include,2要能找到標頭檔案的路徑,3標頭檔案中的方法要有具體實現(要麼直接有原始檔,要麼有庫)。所以根據以上三點,找不到標頭檔案,找不到實現,都能很好的去解決。首先檢查是否include,其次該標頭檔案是否能找到相應的路徑(vs中設定的是標頭檔案包含,包含目錄,當然如果在include中具體指定路徑#include 「../../***.h」也是一種方法),最後再檢查是否有相應的實現。

關於庫檔案。 首先也要有相應的指定庫名。 其次要有指定相應的路徑。 這個和標頭檔案並不是完全的一回事。具體見第三節。

以上兩節參見:c++靜態庫與動態庫

(我確實很懶,其次可能寫的也比較亂)

linux 靜態庫和動態庫的一些筆記

linux 靜態庫和動態庫 1.靜態函式庫 可以使用ar命令來建立和修改靜態庫,這類庫的名字一般是lib a 利用靜態函式庫編譯成的檔案比較大,因為整個函式庫的所有資料都會被整合進目標 中,他的優點就顯而易見了,即編譯後的執行程式不需要外部的函式庫支援,因為所有使用的函式都已經被編譯進去了。當然這也...

靜態庫和動態庫的那點事

1 靜態庫 靜態庫是把程式執行時需要使用的函式編譯在乙個二進位制檔案中,擴充套件名為.lib。當程式link時把靜態庫中的二進位制資料和程式其它資料放到一起。程式執行時不在需要lib和dll檔案的支援。我們在鏈結的時候需要靜態鏈結庫,一旦鏈結成功,生成了可執行檔案,那麼,靜態鏈結庫就不再需要了。這樣...

靜態庫與動態庫的那點事

靜態庫與動態庫的相關概念以及使用方法?要點 截圖展示區 訪問動態庫,hmodule mydll loadlibrarya 動態庫.dll include include include 匯出函式,載入時呼叫 declspec dllexport void msg 匯出函式,載入時呼叫 declspe...