大家知道,VB6只能制作ActiveX DLL文件,制作能輸出函數(shù)的通用DLL文件通常要用到VC等工具。實際上,VB在編譯的時候加以控制,經(jīng)過適當(dāng)處理也是可以制作通用DLL的。使用VB_DLL_Link程序就可以利用VB編譯出通用的DLL文件,此DLL文件可以被其他程序調(diào)用,例如在VB中用Declare語句調(diào)用并執(zhí)行DLL中的函數(shù)。
下面介紹VB_DLL_Link的使用方法:
1、安裝:
本軟件為純綠色軟件。下載VB_DLL_Link.exe后,雙擊它就可以自動安裝了。你也可以手動將它復(fù)制到VB6程序目錄下,將原Link.exe改名為Link2.exe,再將VB_DLL_Link.exe改名為Link.exe即可。
2、生成DLL:
安裝好VB_DLL_Link后,打開VB6,新建標(biāo)準(zhǔn)exe工程,工程菜單>>移除Form1,添加一個標(biāo)準(zhǔn)模塊如Module1.bas,首先向其中寫入DLL的入口代碼:
Function DllMain(ByVal hInstDLL As Long, ByVal fdwReason As Long, ByVal lpwReserved As Long) As Long
DllMain = 1
End Function
注意參數(shù)形式一定要正確,否則編譯失敗。高級編程時這些參數(shù)很有用。在首次調(diào)用DLL和調(diào)用DLL的原程序退出時均會執(zhí)行DllMain函數(shù)。這個函數(shù)是必須的。
為了使VB不報錯,還需加入以下代碼:
Sub Main()
'確保VB能編譯
End Sub
然后就可以向Module1.bas中寫入自定義函數(shù)代碼了,如:
Function Add(ByVal A As Double, ByVal B As Double) As Double
MsgBox A + B
Add = A + B
End Function
Private Sub M(s As String)
MsgBox s, vbInformation
End Sub
編寫好代碼后,保存工程,選擇文件菜單>>生成exe,注意將文件擴(kuò)展名改為.dll,否則本軟件不能調(diào)出。然后本程序就會運行,出現(xiàn)一個對話框提示選擇此工程需要導(dǎo)出的函數(shù)所在的模塊文件,此例即Module1.bas,選擇好后本程序主窗口會列出Module1.bas中所有的函數(shù)名。如果有多個模塊,可以選擇"從模塊添加"按鈕繼續(xù)添加函數(shù)名。"添加函數(shù)名"按鈕可手動添加現(xiàn)存的函數(shù)的名稱。然后勾選需要導(dǎo)出的函數(shù)名,點擊"編譯為能輸出函數(shù)的DLL"按鈕,即可編譯出通用DLL文件了,它能輸出函數(shù)列表中打勾的所有函數(shù)。若不需要編譯為通用DLL,請點擊"常規(guī)編譯"或按Esc鍵。
3、應(yīng)用DLL:
編譯好的通用DLL文件,可按常規(guī)DLL文件的調(diào)用方法加以調(diào)用。如上述的例子在VB中調(diào)用方法如下(請將Lib后的字符串改為上面編譯的Dll文件名):
Private Declare Function Add Lib "編譯好的DLL文件的路徑及名稱" (ByVal A As Double, ByVal B As Double) As Double
Private Declare Sub M Lib "編譯好的DLL文件的路徑及名稱" (s As String)
Private Sub main()
Add 9, 2 '調(diào)用DLL中的函數(shù)
M StrConv("您好!", vbUnicode) '字符串需轉(zhuǎn)換成Unicode再傳遞
End Sub
4、注意事項:
* 向DLL傳遞字符參數(shù)時,需轉(zhuǎn)換成Unicode形式StrConv(yourString, vbUnicode),才能正確使用。
* 輸出函數(shù)的模塊建議用標(biāo)準(zhǔn)模塊bas,雖然窗體模塊frm和類模塊cls中的函數(shù)也可以用,但有時會出錯且限制多多。
* 一個工程可以有多個bas模塊,其間的函數(shù)均能直接輸出。
* 建議用Public類型的Function或Sub作為輸出函數(shù)。
* 上例只是一個簡單的示例,實際應(yīng)用中可以在DLL工程(VB的exe工程)中加入窗體、控件、模塊、類模塊等,實現(xiàn)復(fù)雜的功能。
- PC官方版
- 安卓官方手機(jī)版
- IOS官方手機(jī)版