2011-03-22 280 views
3

我在vb.net中編寫了一個調用Web服務的dll,消耗返回的數據,然後將結果傳遞迴調用程序。我最初在VS 2008中寫過,在Windows 7(x64)上。測試它也在Windows 7上編寫的vb 6程序,一切正常。 vb6程序獲得了數據,我可以繼續前進。在vb6中使用.net dll

對我來說,真實的世界,雖然是用VB編寫的6我得到的錯誤「ActiveX組件不能創建對象」時,我得到的代碼

Dim myWebService as webService.ComClass1
Set myWebService = New webService.ComClass1

我另一個DLL裏面這個dll已經在WindowsXP(x86)上重新編譯了我的代碼,並通過.dll和.tbl重新編譯。

當我嘗試註冊dll時,出現錯誤:'找不到DllRegisterServer入口點'。 .tbl似乎在VB中註冊得很好,只要添加一個引用並且intellesense也可以工作。

有沒有人有任何想法,我需要做些什麼來得到這個工作?

回答

4

您不要使用Regsvr32.exe註冊.NET程序集。您必須使用Regasm.exe,您會在框架目錄中找到該工具。如果您未將程序集放入GAC,請使用/ codebase選項。你不應該在開發機器上。

這可能是因爲你讓Visual Studio爲你做的。

+0

我試過使用/ codebase選項,但我得到一個錯誤,說它沒有簽名。我怎麼做?此外,我現在得到一個錯誤,說「自動化錯誤,系統找不到指定的文件」。 – spuppett 2011-03-22 19:27:20

+1

這不是一個錯誤,它是一個警告。它的意思是「你確定你不介意處理DLL地獄?」現在你不知道,你只有一個。不知道它找不到哪個文件,也許你在得到警告後沒有使用/ codebase?您可以使用SysInternals的ProcMon工具查看它正在查找的內容。 – 2011-03-22 19:38:28

+0

得到它的工作。謝謝一堆! – spuppett 2011-03-22 19:46:16

0

您不能註冊.net DLL與VB6 dll相同。 .NET DLL裏面沒有tlb,它是獨立的。

相反,在.net dll上使用REGASM。它在您的計算機上,但您需要執行搜索才能找到它,因爲默認情況下它不在路徑中。