位置:首頁(yè) > 軟件操作教程 > 編程開(kāi)發(fā) > C# > 問(wèn)題詳情

dld類的使用

提問(wèn)人:劉冬梅發(fā)布時(shí)間:2020-10-12
1. 打開(kāi)項(xiàng)目“Tzb”,向“Form1”窗體中添加三個(gè)按鈕。Name 和Text屬性分別為 “B3”、“用LoadLibrary方法裝載Count.dll”,“B4”、“調(diào)用count方法”,“B5”、“卸載Count.dll”,并調(diào)整到適當(dāng)?shù)拇笮〖拔恢谩?p>2. 在“Form1.cs[設(shè)計(jì)]”視圖中雙擊按鈕B3,在“B3_Click”方法體上面添加代碼,創(chuàng)建一個(gè)dld類實(shí)例:

/// <summary>

/// 創(chuàng)建一個(gè) dld 類對(duì)象

/// </summary>

private dld myfun=new dld();

3. 在“B3_Click”方法體內(nèi)添加如下代碼:

myfun.LoadDll("Count.dll"); // 加載 "Count.dll"

myfun.LoadFun("_count@4"); // 調(diào)入函數(shù) count, "_count@4" 是它的入口,可通過(guò) Depends 查看

4. “Form1.cs[設(shè)計(jì)]”視圖中雙擊按鈕B4,在“B4_Click”方法體內(nèi)添加如下代碼:

object[] Parameters = new object[]{(int)0}; // 實(shí)參為 0

Type[] ParameterTypes = new Type[]{typeof(int)}; // 實(shí)參類型為 int

ModePass[] themode=new ModePass[]{ModePass.ByValue}; // 傳送方式為值傳

Type Type_Return = typeof(int); // 返回類型為 int

// 彈出提示框,顯示調(diào)用 myfun.Invoke 方法的結(jié)果,即調(diào)用 count 函數(shù)

MessageBox.Show(" 這是您裝載該 Dll 后第 "+myfun.Invoke(Parameters,ParameterTypes,themode,Type_Return).ToString()

+" 次點(diǎn)擊此按鈕。 "," 挑戰(zhàn)杯 ");

5. “Form1.cs[設(shè)計(jì)]”視圖中雙擊按鈕B5,在“B5_Click”方法體內(nèi)添加如下代碼:

myfun.UnLoadDll();

6. 按“F5”運(yùn)行該程序,并先點(diǎn)擊按鈕B3以加載“Count.dll”,接著點(diǎn)擊按鈕B4三次以調(diào)用3次“count(0)”,先后彈出的提示框如下:

image.pngimage.png   image.png

這三個(gè)提示框所得出的結(jié)果說(shuō)明了靜態(tài)變量S 經(jīng)初始化后,再傳入實(shí)參“0”也不會(huì)改變其值為“0”。

7. 點(diǎn)擊按鈕B5以卸載“Count.dll”,再點(diǎn)擊按鈕B3進(jìn)行裝載“Count.dll”,再點(diǎn)擊按鈕B4查看調(diào)用了“count(0)”的結(jié)果:

image.png

從彈出的提示框所顯示的結(jié)果可以看到又開(kāi)始重新計(jì)數(shù)了,也就是實(shí)現(xiàn)了DLL的動(dòng)態(tài)裝載與卸載了。

繼續(xù)查找其他問(wèn)題的答案?

相關(guān)視頻回答
回復(fù)(0)
返回頂部