Подтвердить что ты не робот

Преобразование IDL файла интерфейса в С#

У меня есть интерфейс, определенный в файле IDL, который я хотел бы использовать в С#. Есть ли способ конвертировать IDL в нечто, пригодное для использования на С#?

4b9b3361

Ответ 1

Один из способов - запустить MIDL в IDL для создания библиотеки типов (.tlb). Для этого требуется блок library в IDL. После того, как у вас есть .tlb, вы можете запустить tlbimp.exe на нем, чтобы получить определение С#/Interop DLL.

Ответ 2

Какие типы данных/структуры используются в IDL? Сначала вы должны определить типы данных в С#, если уже нет встроенного типа.

Вы можете использовать следующий инструмент для преобразования структур, но вам нужно проверить его вручную.

Загрузить: http://download.microsoft.com/download/f/2/7/f279e71e-efb0-4155-873d-5554a0608523/CLRInsideOut2008_01.exe

Эта утилита описана в Доступ к константам и структурам Windows API для P/Invoke.

Оригинальная статья за январь 2008 года теперь доступна только как . Загрузка файла справки CHM, связанная внизу https://msdn.microsoft.com/magazine/msdn-magazine-issues. Пока что исходный код можно найти на http://clrinterop.codeplex.com/.

Ответ 3

Например, я недавно использовал API печати XPS и нуждался в интерфейсах xpsobjectmodel.h. К счастью, Windows SDK поставляется с xpsobjectmodel.idl.

Я сгенерировал TLB файл с использованием MIDL и использовал TLBIMP для создания надлежащей сборки DLL, готовой для добавления в разделе "Ссылки..." моего проекта С#.

Обязательно используйте инструменты с правильной версией для вашей структуры проекта. например, если ваша структура проекта основана на 3.5, использование tlbimp из набора инструментов 4.0 не будет работать.