从.Net Dll创建.Ocx文件
Creation of .Ocx File from a .Net Dll
我有一个.Net Com Dll。是否可以使用此Dll并在c++或MFC中创建.OCX文件。如果是,需要遵循哪些步骤。如果有任何示例代码可用,这将对有很大帮助
您可以使用regasm.exe工具将.NET程序集公开为COM对象。您可以使用[ComVisible(true)]
来指示COM客户端在注册时应该可以看到所有类。此程序集级别属性也可以在Visual Studio中的项目属性中设置。您也可以只将它应用于一些需要导出的类。一旦程序集注册为COM对象,就可以像使用任何标准COM对象一样从非托管客户端实例化任何类。
.ocx文件没有什么特别之处,它只是一个DLL。微软早在Visual Basic版本4天就提出了这个文件扩展名,让VB程序员清楚地知道他们有一个包含控件的DLL。ActiveX控件与VBX控件相反,是从16位开始的。
如果您制作了.NET程序集[ComVisible],那么您已经有了可用于其他项目的COM服务器。如果正确注册,则必须使用Regasm.exe而不是Regsvr32.exe注册.NET程序集。在.NET项目中,使用project+Properties的"生成"选项卡的"注册COM互操作"选项自动完成。以及在安装时使用安装和部署项目。如果需要类型库,请将Regasm.exe与/tlb和/codebase选项一起使用。或Tlbexp.exe
如果这真的需要是一个传统的.ocx,换句话说,有控件,那么您可以使用Winforms UserControl或从Winforms控件派生的自己的类。Winforms自动实现管道,使从Control类派生的类在ActiveX主机中正常工作。
如果你想在普通C++中使用.NET库,有很多方法,主要涉及COM Interop。Microsoft有一整部分MDSN专门用于COM互操作:http://msdn.microsoft.com/en-us/library/6bw51z5z%28v=VS.71%29.aspx.
- 如果.NET DLL支持COM互操作,请使用它
- 尝试使用VC++的#import指令将.NET DLL作为COM对象读取。编译时,VC++应该输出一个.tlh文件和一个.ti文件(分别为头和实现),它们将自动编译到您的项目中。但这可能起作用,也可能不起作用,这取决于DLL的构造、依赖关系等
- 看看创建自己的COM互操作.NET包装库,该库封送对基本.NET DLL的调用
- .cpp和.h文件中的模板专用化声明
- 为什么两个不同的未命名名称空间可以共存于一个cpp文件中
- 文本文件中的单词链表
- CMake-按正确顺序将项目与C运行时对象文件链接
- 使用新行和不使用新行读取文件
- 在C++程序中输入的文本文件将不起作用,除非文本被复制和粘贴
- 挂起和取消挂起一个文件DLL
- 如何确定我已使用非编码文件到达 EOF?
- 命名空间中具有.h和.cpp文件的类
- 如何使用ndk-build.cmd构建Android.so文件
- 从包含m行的文件中提取n行,必要时(惰性地)重复该文件
- 读取文件并输入到矢量中
- 在C++中查找文件
- c++库的公共头文件中应该包含什么
- 用c++从输入文件中读取另一行
- Cppcheck生成xml转储文件
- 读取文件的最后一行并输入到链接列表时出错
- 无法编译 rtmidi 测试 cmidiin.cpp 文件, 非法指令
- 手动注册 OCX 文件
- 从.Net Dll创建.Ocx文件