首先來說說VB調用VB生成的DLL 1. 打開VB 程式,File > New Project 2. 在New Project的對話框中選擇 ActiveX DLL 圖示,VB會自動添加一個Class,名字為Class1 3. 在Project Window(不是菜單欄)選中這個Class1,然後在Properties Window下,輕按兩下 Name,然後修改為VBDll,表示我們将要生成的是VBDLL的Class 4. 在Project Window(不是菜單欄)選中Project1,然後在Properties Window下,輕按兩下 Name,然後修改為DLLProject 5. 儲存檔案和項目,生成兩個檔案VBDll.cls 和 DLLProject.vbp。 6. 在VBDLL.cls裡面寫下如下的代碼 Public Function fun1() As String fun1 = "Congratulations! This is your first VB ActiveX DLL!" End Function Public Sub fun2() MsgBox “Hello!” End Sub 7. 儲存VBDLL.cls,然後File > Make DLLProject.dll, 經過Compile之後生成以Project的名字命名的DLL,為DLLProject.dll和 DLLProject.lib 兩個檔案 8. 關閉上面的DLLProject,然後File > New Project > 選擇 Standard EXE 9. VB首先要引用前面建立的DLLProject.dll Project菜單欄 > References > 添加前面建立的 DLLProject.dll,然後添加如下的代碼: Option Explicit Private Sub Form_Load() Dim testdll As VBDLL Set testdll = New VBDLL 'DLL的一個新執行個體 MsgBox testdll.fun1 End Sub Rem 此時引用的是DLLProject.dll 但是Class是VBDLL。 注:為什麼不可以像前面VB調用VC生成的的DLL那樣,用 Declare 來引用呢?因為VB生成的DLL不是标準的DLL,是以隻能從Project>Reference來引用。 再說說VC來調用VB生成的DLL 在MFC中有一種友善的方法,就是通過ClassWizard利用類型庫生成包裝類,不過有個前提就是com元件的接口必須是派生自IDispatch 具體方法: 按Ctrl+W調出類向導,按Add Class按鈕彈出新菜單,選From a type libarary,然後定位到DLLProject.dll,接下來會出現該DLLProject.dll中的所有接口,選擇你成的接口包裝類_VBDll後,向導會自動生成相應的.cpp和.h檔案. 這樣你就可以在你的MFC工程中像使用普通類那樣使用COM元件了. void CMainFrame::OnMKitHelp() { // TODO: Add your command handler code here _VBDll VbClass; CoInitialize(NULL); if (VbClass.CreateDispatch("DLLProject.VBDll") != 0) { VbClass.fun2(); VbClass.ReleaseDispatch(); } CoUninitialize(); return ; } |