将接口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将无法正常工作。