動態鏈結庫基礎 筆記

2021-04-23 23:13:18 字數 950 閱讀 7531

dll使用有2種方式,一種是顯式鏈結,一種是隱式鏈結。說得直白一些,顯示鏈結需要在程式**中呼叫dll檔案,而隱式鏈結只需要包含相應的標頭檔案。

下面是乙個簡單的win32程式呼叫函式的例子,實現了2個數相加的功能,呼叫變數和類的方法也差不多。

首先,無論顯示隱式,dll專案都是一樣的。新建乙個win32 dynamic-link library工程,命名為dllsample好了,工程中原有的**不去管它,一些關鍵字的解釋很多地方都有詳細的說明,先在dllsample.h標頭檔案中新增函式宣告,extern "c" __declspec(dllexport) int add(int a,int b); (extern "c"貌似可以省略?),在cpp中實現這個函式,return (a+b);

ok,編譯完成,很簡單吧。

再說怎麼呼叫,先說顯式鏈結。新建乙個"hello world"控制台工程,把剛才dll工程下的dllsample.dll拷貝到該工程的debug目錄下,新增下列**

#include "stdafx.h"

#include

typedef (/*_stdcall*/ *dlladdmath)(int,int);

int main(int argc, char* argv)

執行下試試。

然後是隱式鏈結,同樣新建乙個"hello world"控制台工程,把之前dll工程下的dllsample.dll拷貝到該工程的debug目錄下,把dllsample.h和dllsample.lib拷貝到該工程的根目錄下。其次,在hello world工程中新增dllsample.h標頭檔案,cpp檔案中包含該標頭檔案,在project->setting->link->object/library modules中新增dllsample.lib,以下是**:

#include "dllsample.h"

int main(int argc, char* argv)

thar's all

動態鏈結庫基礎 筆記

dll使用有2種方式,一種是顯式鏈結,一種是隱式鏈結。說得直白一些,顯示鏈結需要在程式 中呼叫dll檔案,而隱式鏈結只需要包含相應的標頭檔案。下面是乙個簡單的win32程式呼叫函式的例子,實現了2個數相加的功能,呼叫變數和類的方法也差不多。首先,無論顯示隱式,dll專案都是一樣的。新建乙個win32...

動態鏈結庫 靜態鏈結庫

包含標頭檔案和庫 idir 指定編譯查詢標頭檔案的目錄,常用於查詢第三方的庫的標頭檔案,例 gcc test.c i.inc o test。ldir 指定鏈結時查詢lib的目錄,常用於查詢第三方庫。llibrary 指定額外鏈結的lib庫 巨集定義 dmacro 以字串 1 預設值 定義 macro...

靜態鏈結庫 動態鏈結庫

庫是寫好的現有的,成熟的,可以復用的 現實中每個程式都要依賴很多基礎的底層庫,不可能每個人的 都從零開始,因此庫的存在意義非同尋常。本質上來說庫是一種可執行 的二進位制形式,可以被作業系統載入記憶體執行。庫有兩種 靜態庫 a lib 和動態庫 so dll windows上對應的是.lib dll ...