Dot-Net
使 DLL COM 可訪問
我有一個用 .Net 編寫的類庫,我想將它提供給 VB6/VBA。我試過的沒有用(顯然我在問這個問題)。這是我所做的:
- 我在 Visual Studio 2010 Express 中創建了一個類庫項目並將程式碼放在一個類模組中。
- 我打開項目屬性並轉到“程序集資訊”並選中“使 COM 可見”。
- 我去了“高級編譯”選項並針對.Net 2.0(這是非常簡單的程式碼)。
- 然後我刪除了所有對“系統”的引用。
- 我建構了項目(沒有警告或錯誤)並將 DLL 從 Bin 文件夾複製到 C:\Windows\System32\
- 我執行 RegSvr32 來註冊 DLL 並得到錯誤:
模組“MyDll.dll”已載入,但未找到入口點 DLLRegisterServer。
確保“MyDll.dll 是有效的 DLL 或 OCX 文件,然後重試。
顯然我的第一次嘗試有點天真。有人可以提供指導嗎?
第 6 步是錯誤的。.NET 程序集
$$ ComVisible $$類型在 Regasm.exe 中註冊。如果您不想將 DLL 安裝到 GAC 中,請使用 /codebase 命令行選項。/tlb 命令行選項創建類型庫,您可以在 VB6 項目中使用它。
您需要為您的介面定義 GUID 並標記哪些類實現了哪些介面才能啟動。MSDN 有一個入門指南。您不需要執行 RegSvr32,但您確實需要將 DLL 放在應用程序可以找到它的位置:
使用 Regasm.exe 註冊程序集後,您可以將其安裝在全域程序集記憶體中,以便可以從任何 COM 客戶端啟動它。如果程序集僅由單個應用程序啟動,您可以將它放在該應用程序的目錄中。
這裡也有對整個過程的一個很好的概述。