動態庫兩種呼叫

2021-06-17 20:50:47 字數 1904 閱讀 1898

看過關於動態庫的呼叫例子,於是決定動手做一做:

dll的對外介面宣告標頭檔案,mydll.h:

#include #include #include "public.h"

#define dll_export /*extern "c"*/ __declspec(dllexport) //匯出

#define cust_api _stdcall //標準呼叫

dll_export void cust_api displayversion(tchar *info); //顯示版本

dll_export int cust_api calc(int ia,int ib);

//dll_export int cust_api meticalc(int ia,int ib); //新增加介面

#include "mydll.h"

void cust_api displayversion(tchar *info)

int cust_api calc(int ia,int ib)

int cust_api meticalc(int ia,int ib)

編譯後,生成dlltest.lib 和 dlltest.dll

第一種方法:靜態呼叫

若dll增加新api介面,新介面在使用時,必須要同時更新lib 才能使用,否則會找不到新介面函式的位址,由此可見,lib包含了描述dll 的介面描述資訊。

#include #include using namespace std;

#pragma comment(lib,"..\\apdll\\dlltest.lib") //載入lib庫

#define dll_export /*extern "c"*/ __declspec(dllexport) //匯出

#define cust_api _stdcall //標準呼叫

dll_export void cust_api displayversion(tchar *info); //dll中顯示版本函式

dll_export int cust_api calc(int ia,int ib);

dll_export int cust_api meticalc(int ia,int ib);

int _tmain(int argc, _tchar* argv)

; int a = 10,b=12;

displayversion(version);

wcout《返回值 (*pname)(引數),3個部分;

然後,loadlibrary(path); path為dll所在路徑,可以是system目錄,也可以其他指定目錄。載入成功之後會返回乙個hmodel模組控制代碼。

再利用這個模組控制代碼去,獲取相應函式的位址。

函式指標呼叫時,不同於普通的指標,它不需要間接定址,「*」;

用完dll之後要記得releaselibrary() ;

#include #include using namespace std;

typedef void (cust_api *disver)(tchar *info);

typedef int (cust_api *calcoprt)(int ia,int ib);

int _tmain(int argc, _tchar* argv)

; int a = 10,b=12;

hmodule hmodle = loadlibrary(_t("..\\apdll\\dlltest.dll")); //動態載入dll

if(null == hmodle)

{ wcout<<"load dll failed!"<

看十,百遍,不如自己敲一遍,小小的動態庫呼叫,也是有講究的。

動態方法呼叫的兩種方式

動態方法呼叫的兩種方式 1 使用 方法名呼叫指定方法 假設訪問某乙個action的url為 http localhost 8080 hellword dept list.action 再假設在action中有個login 方法 要呼叫login方法的url為 http localhost 8080 ...

Delphi中動態鏈結庫兩種呼叫方式的比較

摘要 本文闡述了windows環境下動態鏈結庫的概念和特點,對靜態呼叫和動態呼叫兩種呼叫方式作出了比較,並給出了delphi中應用動態鏈結庫的例項。動態鏈結庫 dynamic link library,縮寫為dll 是乙個可以被其它應用程式共享的程式模組,其中封裝了一些可以被共享的例程和資源。動態鏈...

動態鏈結庫的兩種方式

呼叫乙個dll中的函式有兩種方法 1 載入時動態鏈結 load time dynamic linking 模組非常明確自己要呼叫哪些匯出函式,使得它們就像本地函式一樣。要達到如此,需要鏈結時鏈結那些匯出函式所在dll的導入庫,導入庫向系統提供了載入dll時所需的資訊 庫的符號鏈結之類 及dll函式定...