C 動態呼叫DLL

2021-09-05 12:42:27 字數 1932 閱讀 1346

在工作中經常需要寫dll並呼叫。本文寫出一種最簡單實用的dll動態呼叫的demo。

口訣:1個檔案2行單詞3步走

dll1個檔案2個單詞(1個檔案.def,2個單詞:export、test函式名);exe3步走。(申明函式,載入庫,指向函式)。

1、新建乙個空的exe專案;

2、新建乙個空的dll專案,並新增同乙個解決方案中;

3、建好後,設定下dll程式的輸入目錄;

dll編碼

1、在dll專案中,新增乙個.cpp檔案,乙個.def檔案。

2、在.cpp檔案中實現test函式;

int __stdcall test(int a,int b)

int __cdecl test2(int a,int b)

3、在.def檔案中,首行乙個單詞export;其餘行列舉出test函式名

exports

test

test2

exe編碼1、在exe專案中,新增乙個.cpp檔案。

2、在.cpp檔案中編寫**

#include "stdafx.h"

#include //第一步:將函式指標變數化 (把函式拷貝過來,加上笑臉變成函式指標,加上typedef變成型別,申明變數)

typedef int (__stdcall * test) (int a,int b);

typedef int (__cdecl * test2) (int a,int b);

test fntest;

test2 fntest2;

int main(int argc, char* argv)

fntest = (test)getprocaddress(hdll,"test");

fntest2 = (test2)getprocaddress(hdll,"test2");

//驗證函式結果

printf("ans=%d_%d!\n",fntest(9,5),fntest2(6,5));

return 0;

}

1、在exe專案中執行程式

dll:乙個def,def首行export,其它行列出函式名。

exe:三步走;

第一步:將函式指標變數化(首先把函式拷貝過來,加上(*)變成函式指標,加上typedef定義該函式指標型別;最後,申明乙個該型別的變數。)

第二步:載入庫檔案(需要windows.h標頭檔案)。

最後,使用該變數呼叫函式。

1、函式呼叫有三個約定方式 __stdcall、__cdecl、__fastcall; 

1)windows的api都使用__stdcall,需要顯式呼叫。

2)stdcall和cdecl都是從右往左的約定方式,cdecl前兩個分別使用暫存器ecx、edx更快些;

2、該**極為簡單清晰,用起來很便捷。dll的函式都在def檔案中列舉出來了,能快速跳轉**。

C 呼叫動態DLL

c 呼叫動態鏈結庫方法 dllimport mydll.dll public static extern int add int a,int b private void btn add click object sender,eventargs e 如果需要呼叫同乙個dll檔案中的兩個不同函式,則...

C 動態呼叫DLL

本來是想實現控制台程式執行時自動全屏,但是只找到 vc下的實現方法 其中要使用兩個未公開的 win32 api 函式來訪問控制台視窗,這就需要使用 動態呼叫的方法,動態呼叫中使用的 windows api 函式主要有三個,即 loadlibrary getprocaddress 和freelibra...

C 動態呼叫Dll

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