C 動態呼叫DLL

2022-03-19 04:28:22 字數 1188 閱讀 9853

本來是想實現控制台程式執行時自動全屏,但是只找到

vc下的實現方法(

)。其中要使用兩個未公開的

win32 api

函式來訪問控制台視窗,這就需要使用

動態呼叫的方法,動態呼叫中使用的

windows api

函式主要有三個,即:

loadlibrary

,getprocaddress

和freelibrary

。步驟如下:

1.loadlibrary:

裝載指定

dll動態庫

2.getprocaddress

:獲得函式的入口位址

3.freelibrary:

從記憶體中解除安裝動態庫

但是c#

中是沒有函式指標,無法直接使用

getprocaddress

返回的入口位址。後來找到資料,其實

.net 2.0

新增了marshal.getdelegateforfunctionpointer

方法可以滿足這個要求,

msdn

裡的解釋是:將非託管函式指標轉換為委託。

後面的事就簡單啦,我把它編成了乙個類來方便呼叫。

下面是使用的例子:

using

system;

using

system.collections.generic;

using

system.text;

using

system.runtime.interopservices;

using

feiyun0112.cnblogs.com;

namespace}}

using

system;

using

system.collections.generic;

using

system.text;

using

system.runtime.interopservices;

namespace

feiyun0112.cnblogs.com

~dllinvoke()

//將要執行的函式轉換為委託

public

delegate invoke (

string

apiname,type t)  }}

C 動態呼叫DLL

在工作中經常需要寫dll並呼叫。本文寫出一種最簡單實用的dll動態呼叫的demo。口訣 1個檔案2行單詞3步走 dll1個檔案2個單詞 1個檔案.def,2個單詞 export test函式名 exe3步走。申明函式,載入庫,指向函式 1 新建乙個空的exe專案 2 新建乙個空的dll專案,並新增同...

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

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