C# &引用;“未注册的类别”;x64计算机中的错误

C# &引用;“未注册的类别”;x64计算机中的错误,c#,dll,com,interop,windows-7-x64,C#,Dll,Com,Interop,Windows 7 X64,将应用程序部署到Win7 x64计算机时出现问题。 我引用了几个较旧的DLL,它们是32位的,无法重新编译到x64。 我的开发机器是x86,所以它们在这里工作正常。在运行x64的所有客户端计算机中,我都会收到以下消息: “类未注册(HRESULT的例外:0x80040154(REGDB_E_CLASSNOTREG)) 在System.Windows.Forms.UnsafeNativeMethods.CoCreateInstance(Guid&clsid,Object>punkOuter,Int

将应用程序部署到Win7 x64计算机时出现问题。 我引用了几个较旧的DLL,它们是32位的,无法重新编译到x64。 我的开发机器是x86,所以它们在这里工作正常。在运行x64的所有客户端计算机中,我都会收到以下消息:

“类未注册(HRESULT的例外:0x80040154(REGDB_E_CLASSNOTREG))

在System.Windows.Forms.UnsafeNativeMethods.CoCreateInstance(Guid&clsid,Object>punkOuter,Int32上下文,Guid&iid)中

System.Windows.Forms.AxHost.CreateWithLicense(字符串许可证,Guid clsid)

我尝试在VisualStudio2010中将所有目标平台更改为x86,但没有成功。 我还尝试在“AppdData\Local\Apps\2.0…”安装文件夹中使用regsvr32在客户端计算机中注册DLL,但出现错误: “模块”module.dll“已加载,但未找到入口点DllRegisterServer。”对于每个引用的dll。甚至尝试使用干净的x64计算机,但没有

这些是冲突的DLL(与Lead Tools多媒体库相关):

AxInterop.LTMMLib.dll

AxInterop.mscomctlib.dll

AxInterop.MSComDlg.dll

(与windows media player winforms控件相关):

AxInterop.WMPLib.dll

我在网上查阅了许多解决方案,但似乎都不起作用。非常感谢您的任何意见:)


提前感谢。

正如评论中指出的,Windows media library不是问题的根源。 根据Hans Passant的建议,在客户端机器上手动安装了LEADTools(x86),问题得到了解决

谢谢大家的宝贵意见。我无法将意见标记为答案,但以下是报价:


不应注册Axinteop文件。您正在使用的ActiveX控件可能>未安装在目标计算机上。LTMMLib来自Lead Technologies,请使用供应商的>推荐安装过程。MSComctlLib和MSComDlg是古老的VB6控件,最好>完全停止使用它们,并用执行ame thing.WMPLib>不会是问题


当系统上没有安装Windows Media Player时,我也遇到了一些AxInterop的问题。如果您想知道,有“N”“未安装Windows Media Player的Xp、Vista和7版本。在这种情况下,您需要下载并安装到系统上,然后一切正常。仅供参考:媒体播放器下载通常很难找到,这里有一个:。。。也可能是WMPs中缺少此编解码器更新:。。。在我的应用程序中,我还需要安装一些编解码器,并在我的应用程序中安装了一个新版本的K-Lite-Codec包。希望这能有所帮助,但不知道这是否是您的问题。AxInterop文件不应注册。您使用的ActiveX控件可能未安装在目标计算机上。LTMMLib来自Lead Technologies,请使用供应商推荐的安装程序。mscomctlib和MSComDlg是古老的VB6控件,最好完全停止使用它们,用做同样事情的.NET类代替它们。WMPLib不会是问题。
。。。在System.Windows.Forms.UnsafentiveMethods.CoCreateInstance(Guid&clsid…
中,您需要找出它失败的
clsid
的值。