从.Net Dll创建.Ocx文件

时间:2011-05-30 11:09:40

标签: c# c++ visual-c++

我有一个.Net Com Dll可以使用这个dll并在c ++或MFC中创建.OCX文件。如果是,那么需要遵循的步骤是什么。如果有任何示例代码可用,那将是一个很好的帮助

3 个答案:

答案 0 :(得分:4)

您可以使用regasm.exe工具将.NET程序集公开为COM对象。您可以使用[ComVisible(true)]指示注册时COM客户端应该可以看到所有类。也可以在Visual Studio中的项目属性中设置此程序集级别属性。您也可以将它仅应用于某些需要导出的类。一旦程序集注册为COM对象,就可以像使用任何标准COM对象一样从非托管客户端实例化任何类。

答案 1 :(得分:3)

.ocx文件没有什么特别之处,它只是一个DLL。微软在4天的Visual Basic版本中提出了这个文件扩展名,这让VB程序员明白他们有一个包含控件的DLL。 ActiveX控件与16位日的VBX控件相反。

如果你创建了.NET程序集[ComVisible],那么你已经拥有了一个可以在其他项目中使用的COM服务器。如果您正确注册,.NET程序集必须使用Regasm.exe而不是Regsvr32.exe注册。使用Project + Properties,Build选项卡,“Register for COM interop”选项在.NET项目中自动完成。在安装时使用安装和部署项目。如果需要类型库,请将Regasm.exe与/ tlb和/ codebase选项一起使用。或Tlbexp.exe

如果这确实需要是传统的.ocx,换句话说有控件,那么你可以使用Winforms UserControl或从Winforms控件派生自己的类。 Winforms自动实现管道,使得从Control类中派生的类在ActiveX主机中正常运行。

答案 2 :(得分:0)

如果你想在普通的C ++中使用.NET库,有很多方法,主要涉及COM Interop。 Microsoft有一整段专门用于COM Interop的MDSN:http://msdn.microsoft.com/en-us/library/6bw51z5z%28v=VS.71%29.aspx

  1. 如果.NET DLL支持COM Interop,请使用它。
  2. 尝试使用VC ++的#import指令将.NET DLL作为COM对象读取。编译时,VC ++应输出.tlh文件和.thi文件(分别为标题和实现),这些文件将自动编译到您的项目中。但这可能会或可能不会起作用,具体取决于DLL的构造,依赖性等。
  3. 查看创建自己的COM Interop .NET包装器库,该库封送对基本.NET DLL的调用。
相关问题