Использование заголовка C ++ с языком .NET - PullRequest
0 голосов
/ 17 марта 2009

Я пытаюсь использовать файл ".h" из Windows SDK на языке .NET (возможно, C #), но безуспешно. Этот заголовок предоставляет некоторые возможности проигрывателя Windows Media через COM. Если я использую Win32 C ++, я могу использовать его без проблем, поэтому я подумал, что мог бы использовать Managed C ++ в качестве «моста», чтобы выставить его на C #.

Файл заголовка - subscriptionservices.h, который поставляется с Windows Media Player SDK 11 (часть Windows SDK 6).

Это возможно? Как я могу использовать этот заголовочный файл в приложении .NET?

Спасибо, Эдуардо Кобучи

Ответы [ 6 ]

1 голос
/ 17 марта 2009

Если есть определенный фрагмент кода или типов, которые вы хотите использовать в заголовочном файле, вы можете вставить их в PInvoke Interop Assistant и получить сгенерированный для вас код C #.

http://www.codeplex.com/clrinterop/Release/ProjectReleases.aspx?ReleaseId=14120

1 голос
/ 17 марта 2009

Вы можете использовать PInvoke для взаимодействия с Win32. Если вы пытаетесь использовать COM-объект, вы сможете добавить ссылку на проект. Вы смотрели на эту статью?

На практике вам нужно понять, какую работу вы делаете. Если вы собираетесь много заниматься арифметикой с указателями, я бы рекомендовал управляемый c ++. Если не C #. Удачи.

0 голосов
/ 17 марта 2009

Если API простой, вы можете использовать PInvoke, если он сложный, я бы предложил использовать C ++ / CLI. Это позволяет вам создать «мост» между управляемым и неуправляемым миром.

0 голосов
/ 17 марта 2009

Это может дать вам преимущество на пути C ++, если вы пойдете по этому пути.

http://code.msdn.microsoft.com/wmpinterop

Обратите внимание, что интерфейс WMP имеет несколько хитрых интерфейсов для P / Invoke. Для меня проще написать оболочку на C ++.

0 голосов
/ 17 марта 2009

Да - это возможно. P / Invoke твой друг. Используйте эту ссылку для перевода заголовков.

Типы данных вызова платформы

0 голосов
/ 17 марта 2009

Попробуйте PInvoke . Я не думаю, что вы можете использовать фактический заголовок, но вы можете ссылаться на функции во внешних неуправляемых DLL.

...