如何用C 包裹的COM接口部署C#库

How to deploy C# library with COM interface wrapped in C++?

本文关键字:接口 部署 COM 何用 包裹      更新时间:2023-10-16

我已经创建了c#库,但随后发生了一些不受管理的C 解决方案也需要它。我创建了COM接口(提取的接口,添加了GUID,创建的键,注册等)。

我创建了使用TLB文件并创建TLH文件的C 库。目前,我正在创建一些简单的UI来检查此包装器是否有效。我的问题是 - 我应该向客户提供什么,因为我对COM对象的"签名"过程有疑问。我现在必须部署 - 一个C#库及其用C 编写的包装器(使用.H,.lib和.dll-也许还有更多?)。我不知道它是否会启动,当它未在用户系统中注册时?如何处理它,当用户获取一些文件时,他可以立即与他们合作?

不,您的客户不需要此" C 包装器"。它们可以轻松地生成一个,例如,MSVC 中的#IMPORT指令会自动自动。无论如何,他们都不需要使用C ,com用任何语言都起作用。如果您完全包含任何内容,请考虑一个演示界面的工作方式的演示程序,还可以让他们检查所有内容是否正确安装并按照工作顺序安装。

您的客户需要的是 type库,一个.tlb文件,该文件描述了界面,并且大多数编译器都可以读取。像MSVC 中的#IMPORT指令一样,项目 在.NET项目中添加参考。类型库与.NET组件中的元数据完全相同。在C#[Comvisible]汇编的情况下,它是由.NET元数据自动生成的,您可以在汇编上运行tlbexp.exe。您的客户也可以做到这一点,如果他们这样做,那就更好了。但是,如果他们不熟悉.net工具,您可以为他们做。

您必须做的唯一一件事就是编写一个安装程序,以便在客户的计算机上正确注册程序集。与Regasm.exe一样。com非常喜欢[可忽视]集会的GAC,com有一个讨厌的dll地狱问题。

您需要创建一个安装程序,该安装程序在目标计算机中注册您的程序集。如果创建MSI安装程序,则在文件系统编辑器中有一个寄存器属性,其中具有不同的COM注册选项。MSI可以检测项目输出的依赖关系。您可以在这里开始阅读:

http://msdn.microsoft.com/en-us/library/cc766795.aspx