c 關於動態載入Dll

2021-07-23 01:20:05 字數 860 閱讀 3494

載入dll是開發程式必不可少的步驟之一,一般情況下用到第三方dll的時候沒有.lib檔案以及.h檔案。那麼就需要動態載入dll。當然用到第三方dll的時候應該會有開發文件。不然的話

雖然用工具能檢視函式原型,但是裡面的引數問題也會有困擾。

那麼動態載入dll呢,網上資源很多。我現在也整理了出來。

hmodule hdll;

hdll=loadlibrary("動態庫名");

這樣呢就把動態庫載入上了,但是我用的絕對路徑,需要把這個動態庫複製到你原始碼的根目錄下。比如你是demo,那麼就複製到demo裡面的demo裡面去。

然後就是把封裝好的函式取出來了。

typedef  int(*function)(原函式的引數,多個用,隔開);那裡 的int呢,是函式原型,比如是void 那麼就把int換成void。

function fun=(function)getprocaddress(hdll,"函式名");

這樣就取得函式了,

呼叫函式用fun(引數)。這裡fun就是你載入動態庫的函式別名。當然你也可以用函式原名, 至於大寫的function就是乙個指標,給函式開闢了空間,這個名字也可以換.

最後用完這個別忘了freelibrary(hdll);

這就是動態載入dll了,如果你需要的函式很多,也不止在乙個函式裡面用,我建議把他設為全域性變數。

hmodule hdll;

hdll=loadlibrary("動態庫名");

typedef  int(winapi *function)(原函式的引數,多個用,隔開);

function fun=(function)getprocaddress(hdll,"函式名");

freelibrary(hdll);

C 動態載入DLL

using system.reflection 利用反射進行動態載入和呼叫.assembly ass assembly.loadfrom dllpath 利用dll的路徑載入 載入dll後,需要使用dll中某類.type type ass.gettype typename 利用型別的命名空間和名稱獲...

C 動態載入DLL

利用反射進行動態載入和呼叫.assembly ass assembly.loadfrom dllpath 利用dll的路徑載入 載入dll後,需要使用dll中某類.type type ass.gettype typename 利用型別的命名空間和名稱獲得型別 需要例項化型別,才可以使用,引數可以人為...

C 動態載入Dll

在很多應用程式中有這樣的效果,就是某個資料夾下面放入某個dll,這個軟體就會把此dll顯示出來。效果圖如下 這個效果在c 裡面實現起來非常簡單 foreach var name in projectsname toolstripmenuitem deletefile new toolstripmen...