3

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

“类未注册(HRESULT 异常:0x80040154 (REGDB_E_CLASSNOTREG))

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

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

我尝试在 Visual Studio 2010 中将所有目标平台更改为 x86,但无济于事。我还尝试通过在“AppdData\Local\Apps\2.0...”安装文件夹中使用 regsvr32 在客户端计算机中注册 dll,但出现错误:“模块“Module.dll”已加载,但入口点-找不到点 DllRegisterServer。” 对于每个引用的 dll。甚至尝试使用干净的 x64 机器,但没有。

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

AxInterop.LTMMLib.dll

AxInterop.MSComctlLib.dll

AxInterop.MSComDlg.dll

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

AxInterop.WMPLib.dll

我在网上查了很多解决方案,但似乎都没有。非常感谢任何输入:)

提前致谢。

4

1 回答 1

2

正如评论中所指出的,Windows 媒体库不是问题的根源。按照 Hans Passant 的建议,在客户端机器上手动安装了 LEADTools (x86) 并解决了问题。

感谢大家的有益评论。我无法将评论标记为答案,但这是引用:

不应注册 AxInterop 文件。您正在使用可能没有安装在目标机器上的 ActiveX 控件。LTMMLib 来自 Lead Technologies,使用供应商的 >recommend 安装程序。MSComctlLib 和 MSComDlg 是古老的 VB6 控件,最好>完全停止使用它们并用做同样事情的 .NET 类代替。WMPLib > 不会有问题。

于 2012-10-17T15:07:25.990 回答