将接口 IDL 文件转换为 C#
Posted
技术标签:
【中文标题】将接口 IDL 文件转换为 C#【英文标题】:Convert Interface IDL file to C# 【发布时间】:2010-11-21 09:59:10 【问题描述】:我在 IDL 文件中定义了一个接口,我想在 C# 中使用它。有没有办法将 IDL 转换为 C# 中可用的东西?
【问题讨论】:
在 C# 中可用的东西。可以编译的东西。 【参考方案1】:一种方法是在 IDL 上运行 MIDL
以创建类型库 (.tlb)。这需要 IDL 中的 library
块。获得 .tlb 后,您可以在其上运行 tlbimp.exe
以获取 C# 定义/互操作 DLL。
【讨论】:
然后你可以使用JetBrains dotPeek从生成的互操作DLL中查看C#定义。【参考方案2】:IDL 中使用了哪些数据类型/结构?如果还没有内置类型,则应首先在 C# 中定义数据类型。
您可以使用以下工具转换结构,但您需要手动验证输出。
下载:http://download.microsoft.com/download/f/2/7/f279e71e-efb0-4155-873d-5554a0608523/CLRInsideOut2008_01.exe
此实用程序在Accessing Windows API Constants and Structs for P/Invoke 进行了描述。
2008 年 1 月的原始文章现在仅以 .CHM help file download 的形式提供,链接在 https://msdn.microsoft.com/magazine/msdn-magazine-issues 的底部。暂时可以在http://clrinterop.codeplex.com/找到源码。
【讨论】:
这方面的文档在哪里>?? @ChandraEskay 由于指向 MSDN 文章的链接不再正确,我冒昧地更新了有关此实用程序的信息。【参考方案3】:例如,我最近使用了 XPS Print API,需要 xpsobjectmodel.h 接口。幸运的是,Windows SDK 附带了 xpsobjectmodel.idl。
我首先使用 MIDL 生成了 TLB 文件,然后使用 TLBIMP 生成了一个合适的 DLL 程序集,准备好添加到我的 C# 项目的“参考...”部分。
确保为您的项目框架使用正确版本的工具。例如,如果您的项目框架基于 3.5,则无法使用 4.0 工具集中的 tlbimp。
【讨论】:
以上是关于将接口 IDL 文件转换为 C#的主要内容,如果未能解决你的问题,请参考以下文章
protobuf(Protocol Buffers).proto文件中的IDL(Interface Definition Language 接口定义语言)是什么?