【发布时间】:2013-12-06 00:25:56
【问题描述】:
在引用在 Delphi XE2 中编译的 x64 OCX 时,我的 C# 项目出现问题。 OCX 位于并注册在 system32 目录中。但是,当我尝试使用 Visual Studio 2010 引用它时,它不会在浏览引用窗口中列出,除非我将 OCX 移动到另一个目录,例如 c:\test\,然后才会显示它。
当我将 x32 版本的 OCX 复制到 syswow64 目录时,没有在此目录中注册,然后 IDE 在浏览引用窗口中列出它。但是当我尝试实例化该类时,出现以下异常:
System.Runtime.InteropServices.COMException 未处理 消息=由于以下错误,检索具有 CLSID {58465503-4991-4578-8478-FF7A6CBAA8CE} 的组件的 COM 类工厂失败:80040111 ClassFactory 无法提供请求的类(来自 HRESULT 的异常:0x80040111 (CLASS_E_CLASSNOTAVAILABLE))。 源=mscorlib 错误码=-2147221231
当我使用另一个目录,如 c:\test\ 并在那里注册 OCX,并在我的项目中引用并实例化它时,一切正常。
我不知道是什么导致了这个问题,如果它是一个 IDE 错误或 OCX 中的一个问题。 OCX,x32 和 x64,都有不同的 UID。
有人知道会发生什么吗?
谢谢
编辑:IDE 是 x32
【问题讨论】:
-
这个ocx是32位还是64位?
-
Visual Studio 本身是什么 - 它是 win32 还是 win64 应用程序?您可以在 IDE 运行时打开 Windows 任务管理器或在 ntCore CFF 资源管理器中打开 Visual Studio 的 EXE 来检查它。
-
第一步:停止将文件放入系统目录。这似乎也与 Delphi 无关。这是一个纯粹的 VS 问题。
-
@DavidHeffernan 如果 VCL TComServer 类在 Win64 机器上的 ActiveX 注册方面变得愚蠢,这可能与 Delphi 相关。不太可能但有可能。
-
@Arioch'XE2 COM 注册工作正常
标签: c# visual-studio-2010 delphi reference ocx