2012-10-15 220 views
3

將應用程序部署到Win7 x64機器時出現問題。 我引用了幾個32位舊的dll,無法重新編譯爲x64。 我的開發機器是x86,因此它們在這裏可以正常工作。在所有正在運行的64位客戶端機器的我得到的消息:在x64機器中出現「Class not registered」錯誤

"Class not registered (Exception from HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG))

at System.Windows.Forms.UnsafeNativeMethods.CoCreateInstance(Guid& clsid, Object >punkOuter, Int32 context, Guid& iid) at

System.Windows.Forms.AxHost.CreateWithLicense(String license, Guid clsid)

我試圖改變所有的目標平臺,在x86的Visual Studio 2010和無濟於事。 我也嘗試通過在「AppdData \ Local \ Apps \ 2.0 ...」安裝文件夾中使用regsvr32註冊客戶端機器中的DLL,但出現錯誤: 「模塊」Module.dll「已加載,但條目沒有找到點的DllRegisterServer。「爲每個引用的dll。即使嘗試使用乾淨的x64機器,也沒有。

這些都是衝突的DLL(相關領導工具多媒體庫):

AxInterop.LTMMLib.dll

AxInterop.MSComctlLib.dll

AxInterop.MSComDlg.dll

(與Windows媒體播放器的WinForms控制):

AxInterop.WMPLib.dll

我在網上查找了許多解決方案,但沒有似乎工作。任何輸入非常感謝:)

在此先感謝。

+1

我有這個問題與一些AxInterop的東西太多時,有在系統上沒有安裝Windows媒體播放器。如果你想知道,有「N」版本的Xp,Vista和7 *沒有安裝Windows Media Player *。在這種情況下,你需要下載並安裝在系統上,然後一切正常。 – Akku

+2

供參考:一個媒體播放器下載通常很難找到,一個在這裏:http://www.chip.de/downloads/Windows-Media-Player_13001267.html ...它也可能是,這個編解碼器更新是缺少WMPs:https://www.microsoft.com/en-us/download/confirmation.aspx?id = 6191 ...也在我的應用程序中,我需要安裝一些編解碼器,並剛剛安裝了新版本的K -Lite-Codec Pack以及我的應用程序。希望這可以幫助,不知道這是否是你的問題。 – Akku

+2

AxInterop文件不應註冊。您正在使用您可能未安裝在目標計算機上的ActiveX控件。 LTMMLib來自Lead Technologies,使用供應商的建議安裝程序。 MSComctlLib和MSComDlg是古老的VB6控件,最好完全停止使用它們,並替換爲執行相同操作的.NET類。 WMPLib將不會成爲問題。 –

回答

2

正如評論中指出的,Windows媒體庫不是問題的根源。 按照Hans Passant的建議,在客戶機上手動安裝了LEADTools(x86),問題已解決。

感謝大家的寶貴意見。我不能標記爲答案註釋,但這裏的報價:

AxInterop files should not be registered. You are using ActiveX controls that you probably >did not install on the target machine. LTMMLib is from Lead Technologies, use the vendor's >recommend install procedure. MSComctlLib and MSComDlg are ancient VB6 controls, best to >completely stop using them and substitute with .NET classes that do the same thing. WMPLib >won't be a problem.

+0

如果你滿意,請將其標記爲答案它。 –

相關問題