从暴露给 COM 的 C# 类中提取 C/C++ 头文件

Posted

技术标签:

【中文标题】从暴露给 COM 的 C# 类中提取 C/C++ 头文件【英文标题】:Extract a C/C++ header file from a C# class exposed to COM 【发布时间】:2010-06-02 15:32:21 【问题描述】:

我不确定我是否已在我的 C# 类中正确设置了我需要的所有内容,但它在 COM 中确实有效。我一直在寻找在 C/C++ 项目中成功使用的 C# 类的示例,但没有遇到任何问题。

我尝试使用 OLE/COM 对象视图应用程序打开 .tlb 文件并另存为 .h,但它给出了一些错误:MIDL1009:未知参数被忽略; MIDL1001:无法打开输入文件 Studio

“Studio”不是文件的名称,它是 Syslog,所以这对我来说是一个危险信号。

有什么想法吗?

【问题讨论】:

【参考方案1】:

如果您有tlb,则不需要头文件。 tlb 的#import 会自动为你生成。

#import "my.tlb" named_guids raw_interfaces_only

查看更多关于#importhere的信息。

【讨论】:

【参考方案2】:

如果您已经将 C# 类公开给 COM,那么您应该使用 COM 互操作从您的 C++ 代码访问 COM Callable Wrapper。

无需尝试生成头文件。

如果您可以选择在您的 C++ 项目中运行托管代码,那么您甚至不需要 COM,您可以直接引用您的 C# 类并像从 C++ 中访问任何其他 .NET 对象一样访问它。

【讨论】:

以上是关于从暴露给 COM 的 C# 类中提取 C/C++ 头文件的主要内容,如果未能解决你的问题,请参考以下文章

在 Mono 中将 C++ 暴露给 C#:函数的无效转换?

如何将 C# 元组暴露给 C++

将 goto 标签暴露给符号表

c#读取word文档为何要引用com

我如何根据对象标签从这个排序数组中提取碰撞数据并将该对象分配给 C# 中的目标

将 C# 方法暴露给非托管