看過關於動態庫的呼叫例子,於是決定動手做一做:
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函式定...