Конвертировать IDL-файл интерфейса в C#
У меня есть интерфейс, определенный в файле IDL, который я хотел бы использовать в C#. Есть ли способ преобразовать IDL во что-то полезное в C#?
3 ответов
один из способов-запустить MIDL
на IDL для создания библиотеки типов (.tlb). Для этого требуется library
блок в IDL. Если у вас есть .tlb, вы можете запустить tlbimp.exe
на нем, чтобы получить C# definition/Interop DLL.
какие типы данных/структуры используются в IDL? Сначала вы должны определить типы данных в C# , если уже нет встроенного типа.
вы можете использовать следующий инструмент для преобразования структур, но вам нужно проверить вывод вручную.
эта утилита описана в доступ к константам API Windows и структуры для P / Invoke.
оригинальная статья января 2008 года теперь доступна только как .CHM скачать файл справки, связанный в нижней части https://msdn.microsoft.com/magazine/msdn-magazine-issues. На данный момент исходный код можно найти по адресуhttp://clrinterop.codeplex.com/.
например, недавно я использовал API печати XPS и нуждался в xpsobjectmodel.ч интерфейсы. Windows SDK поставляется с xpsobjectmodel.idl к счастью.
сначала я создал файл TLB с MIDL и использовал TLBIMP для создания правильной сборки DLL, готовой к добавлению в "ссылки"... раздел в мой проект c#.
обязательно используйте инструменты с правильной версией для вашей структуры проекта. e.g, Если ваша структура проекта основана на 3.5, используя tlbimp из набор инструментов 4.0 не будет работать.