一、帶窗體的dll創(chuàng)建
創(chuàng)新互聯(lián)公司總部坐落于成都市區(qū),致力網(wǎng)站建設(shè)服務(wù)有成都做網(wǎng)站、成都網(wǎng)站設(shè)計(jì)、網(wǎng)絡(luò)營(yíng)銷(xiāo)策劃、網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站維護(hù)、公眾號(hào)搭建、小程序開(kāi)發(fā)、軟件開(kāi)發(fā)等為企業(yè)提供一整套的信息化建設(shè)解決方案。創(chuàng)造真正意義上的網(wǎng)站建設(shè),為互聯(lián)網(wǎng)品牌在互動(dòng)行銷(xiāo)領(lǐng)域創(chuàng)造價(jià)值而不懈努力!
1、先新建 類(lèi)庫(kù)(testdll),在項(xiàng)目中添加兩個(gè)窗體form1(主窗體)、form2,為了與后面的調(diào)用區(qū)分分別命名為fm1,fm2;并在fm1窗體中添加一個(gè)按鈕用來(lái)調(diào)用fm2如下圖
2、在fm1窗體代碼中先引用fm2, ? ?按鈕代碼調(diào)用fm2.如圖
3、生成dll,(class1.vb中不需要寫(xiě)任何代碼)
二、調(diào)用dll
1、新建 一個(gè)windows應(yīng)用程序并添加一個(gè)按鈕用來(lái)調(diào)用dll中的窗體,選 擇 “項(xiàng)目”-“添加引用”,選擇剛才創(chuàng)建的testdll
2、窗體代碼中先引用testdll,再定義一個(gè)testdll中的fm1對(duì)象,最后執(zhí)行對(duì)象的show方法
3、運(yùn)行結(jié)果如下:
DLL(動(dòng)態(tài)鏈接庫(kù))是一個(gè)很有用的東西,在開(kāi)發(fā)大項(xiàng)目的時(shí)候顯得非常重要,因?yàn)槎嗳撕献鏖_(kāi)發(fā)時(shí),可以給每個(gè)人分配一個(gè)任務(wù),用DLL完成,最后組合起來(lái),就不會(huì)出現(xiàn)互相沖突的問(wèn)題。這里給出最簡(jiǎn)單的DLL編寫(xiě)與調(diào)用的示例
首先,我們打開(kāi)VB.NET,選擇類(lèi)庫(kù),名稱(chēng)改為test
然后輸入以下代碼
Public?Class?test
Public?Function?test(ByVal?a?As?Long,?ByVal?b?As?Long)?As?Long
Return?a?+?b
End?Function
End?Class
保存后,生成DLL文件。
這就是最簡(jiǎn)單的一個(gè)DLL,下面是調(diào)用該DLL的示例
新建一個(gè)工程,單擊“項(xiàng)目” -- 添加引用
找到剛才生成的DLL,雙擊它
添加引用以后,似乎什么也沒(méi)發(fā)生,這時(shí)我們輸入以下代碼:
Imports test.test
這樣,就包含了該DLL的類(lèi)。
然后我們定義一個(gè)類(lèi)
Dim test As New test.test
這樣,就可以使用里面的函數(shù)了,下面是程序示例
Imports?test.test
Public?Class?Form1
Private?Sub?Form1_Load(ByVal?sender?As?System.Object,?ByVal?e?As?System.EventArgs)?Handles?MyBase.Load
Dim?test?As?New?test.test
MsgBox(test.test(1,?2))
End?Sub
End?Class
運(yùn)行該程序,可以看到,調(diào)用了DLL內(nèi)的函數(shù)。
這就是最簡(jiǎn)單的DLL示例,可以將一些復(fù)雜的代碼集成到DLL里,以后升級(jí)或重用都比較方便。
上級(jí)目錄不可以,但是為了保證程序路徑改變,引用不會(huì)被破壞??梢杂袔讉€(gè)方法:
1.將DLL文件放在程序同級(jí)目錄
2.將DLL文件放在程序子目錄
3.將DLL文件放在System32目錄下(系統(tǒng)目錄,可以直接引用DLL)
4.可以將DLL文件打包成資源文件,融合到EXE程序中,每次執(zhí)行判斷同級(jí)目錄是否有DLL文件,不存在,釋放資源文件。
Private Declare Auto Function funct Lib "xxx.dll" (ByRef address() As Byte) As Integer
"xxx.dll" 你的 dll 文件名稱(chēng),保證他與你的程序在同一文件夾(或系統(tǒng)文件夾)中。不管是指針還是指向指針的指針,都是指針,數(shù)據(jù)類(lèi)型是 int(integer),vb中聲明為 integer 總是正確的,至于如何解釋這個(gè)指針,很多情況下 vb 是無(wú)能為力的,你的 dll 還要幫助 vb 解釋?zhuān)?,設(shè)計(jì) dll 時(shí),要考慮使用者的接受能力。
Private Declare function x Lib "dlltest.dll" (ByVal a As long, byval b as long) as long