2014-09-02 96 views
-1

我試圖遷移用Visual Basic編寫的腳本從32位Windows Server 200864位Windows Server 2012 R2。該腳本連接到SQL Server,執行一些查詢並執行對供應商/第三方API的調用。問題從32位Windows Server 2008遷移VB腳本(依賴於供應商API)到64位Windows Server 2012 R2

包含供應商API代碼的dll文件未包含在新服務器安裝中,因此我從舊服務器複製了該文件。爲了能夠將dll(通過Add Reference選項)添加到項目中,我必須通過Tlbimp.exe運行dll。

當我嘗試運行可執行文件爲我的新的Windows服務器上的腳本,我得到了臭名昭著的錯誤:

Unhandled Exception: System.Runtime.InteropServices.COMException: Retrieving the COM class factory for component with CLSID {...} failed due to the following error: 80040154 Class not registered (Exception from HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)).

我想這是一個關於第三方投訴DLL沒有被註冊,所以我已經嘗試...

......在平臺設置爲86

按: Retrieving the COM class factory for component with CLSID {XXXX} failed due to the following error: 80040154。在MS Visual Basic 2010 Express IDE中,我已將該平臺設置爲Active (x86),這是我擁有的唯一選項。

......放置DLL System32文件夾

......註冊DLL

使用regsvr32.exe。但我GETT他錯誤:

The module "C:\Windows\SysWOW64\vendor.dll" was loaded but the entry-point DllRegisterServer was not found...

誠然,我不知道的基本知識,當涉及到Windows編程,我覺得我可能會丟失一些簡單的或根本在這裏。

如何讓我的VB應用程序在供應商API(dll)的新服務器上運行?

+0

顯然你需要註冊COM服務器。我建議你按照文檔,如果你遇到困難,請與供應商聯繫。 – 2014-09-02 15:44:37

+0

不幸的是,我沒有文檔也沒有從供應商的支持:( – nmc 2014-09-02 15:45:41

+0

嗯,我想你需要繼續努力。 – 2014-09-02 15:46:35

回答

0

這的確是我的一個愚蠢的錯誤...

當試圖註冊DLL,我嘗試註冊,是由Tlbimp.exe(在一個轉換的DLL,我可以添加作爲該參考項目),而不是從舊服務器複製的原始dll文件。

原始dll文件註冊成功,現在可執行文件可以運行。

相關問題