将接口IDL文件转换为C#

我有一个IDL文件中定义的接口,我想在C#中使用。 有没有办法将IDL转换为C#中可用的东西?

一种方法是在IDL上运行MIDL以创建类型库(.tlb)。 这需要IDL中的library块。 获得.tlb后,可以在其上运行tlbimp.exe以获取C#定义/ Interop DLL。

IDL中使用了哪些数据类型/结构? 如果没有inbuild类型,则应首先在C#中定义数据类型。

您可以使用以下工具转换结构,但需要手动validation输出。

下载地址: http : //download.microsoft.com/download/f/2/7/f279e71e-efb0-4155-873d-5554a0608523/CLRInsideOut2008_01.exe

在访问Windows API常量和P / Invoke的结构时描述了此实用程序。

最初的2008年1月文章现在仅作为.CHM帮助文件下载提供 ,链接在https://msdn.microsoft.com/magazine/msdn-magazine-issues的底部。 目前,可以在http://clrinterop.codeplex.com/上找到源代码。

例如,我最近使用了XPS Print API并需要xpsobjectmodel.h接口。 幸运的是,Windows SDK附带了xpsobjectmodel.idl。

我首先使用MIDL生成TLB文件,并使用TLBIMP生成一个正确的DLL程序集,准备添加到我的C#项目的“References …”部分。

请务必使用具有正确版本的工具作为项目框架。 例如,如果您的项目框架是基于3.5的,那么使用4.0工具集中的tlbimp将无法正常工作。