動態鏈結庫 一

2021-08-01 16:44:19 字數 1359 閱讀 6694

形式1:返回型別(*函式名)(參數列) 

char (*pfun)(int);   

char glfun(int a)   

void main()   

形式1:typedef  返回型別(*新型別)(參數列)

typedef char (*ptrfun)(int);   

ptrfun pfun;   

char glfun(int a)   

void main()   

dependency walker (depends.exe) 

showdlg.h

#include "stdafx.h"

#define export __declspec(dllexport)//匯出函式

extern "c" export void __stdcall showdialog(char* ptext);//extern "c" 防止c++編譯器對函式名進行改編

showdlg.cpp //

#include "stdafx.h"

#include "showdlg.h"

bool apientry dllmain( handle hmodule,

dword ul_reason_for_call,

lpvoid lpreserved

)void __stdcall showdialog(char* ptext)

由於_stdcall是一種比較流行的函式呼叫約定,為了防止發生函式命名改變的情況,可以定義乙個.def檔案

showdlg.def

library showdlg.dll//動態鏈結庫名稱

exports

showdialog = showdialog//匯出的函式名=動態鏈結庫內部函式名

#include "stdafx.h"

#include "windows.h"

int main()

freelibrary(hmod);//解除安裝動態鏈結庫

printf("dll\n");

}

需要三個檔案,動態鏈結庫檔案showdlg.dll,動態鏈結庫標頭檔案showdlg.h,動態鏈結庫lib檔案showdlg.lib

#include "stdafx.h"

#include "windows.h"

#include "showdlg.h"

#pragma comment(lib,"showdlg.lib")

int main()

動態鏈結庫 靜態鏈結庫

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

靜態鏈結庫 動態鏈結庫

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

靜態鏈結庫,動態鏈結庫

關於靜態鏈結庫,參考如下博文 當你完成了 開發,想把這個 給別人用,但是又不希望別人看到原始碼,就要給別人乙個庫和標頭檔案,庫和標頭檔案是配合的,缺一不可。或者過程相反,你從別人那裡拿到乙個庫和標頭檔案來使用。那麼如何編譯生成乙個庫給他人,如何使用從他人那裡拿到的庫呢?範例1 我們想把linuxfr...