gpt4 book ai didi

c# - 如何使用包裹在 C++ 中的 COM 接口(interface)部署 C# 库?

转载 作者:行者123 更新时间:2023-11-30 01:18:45 24 4
gpt4 key购买 nike

我已经创建了 C# 库,但后来发现某些非托管 C++ 解决方案也需要它。我创建了 COM 接口(interface)(提取接口(interface)、添加 GUID、创建 key 、注册等等)。

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

最佳答案

不,您的客户不需要这个“C++ 包装器”。他们可以很容易地自己生成一个,例如 MSVC++ 中的#import 指令会自动生成。无论如何,他们没有必要使用 C++,COM 可以在任何语言中工作。如果您完全包含任何内容,请考虑演示界面如何工作的演示程序,还可以让他们检查所有内容是否已正确安装并正常工作。

您的客户需要的是类型库,这是一个描述接口(interface)的 .tlb 文件,大多数编译器都可以读取。与 MSVC++ 中的#import 指令一样,.NET 项目中的 Project + Add Reference。类型库与 .NET 程序集中的元数据完全相同。在 C# [ComVisible] 程序集的情况下,它是从 .NET 元数据自动生成的,您在程序集上运行 Tlbexp.exe。您的客户也可以这样做,如果他们这样做会更好,因为 .tlb 之间有保证的匹配。但如果他们不熟悉 .NET 工具,您可以为他们做。

您唯一需要做的就是编写安装程序,以便在客户的机器上正确注册程序集。与 Regasm.exe 一样。强烈支持 [ComVisible] 程序集的 GAC,COM 存在严重的 DLL hell 问题。

关于c# - 如何使用包裹在 C++ 中的 COM 接口(interface)部署 C# 库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22244955/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com