Как вызвать компонент COM в C - PullRequest
3 голосов
/ 17 декабря 2010

Мне нужно вызвать компонент COM из C, сделанный в Visual Studio. Я могу вызвать его из Visual C ++ , используя директиву #import, указав файл .tlb. Но я не вижу директивы #import на языке Си. Есть ли альтернатива, которую я могу использовать вместо этого?

Я не могу писать на C ++, поскольку мне нужно создать модуль только на чистом C.

Ответы [ 2 ]

1 голос
/ 14 января 2014

Хорошо, вам следует (вкратце):

  1. Если вы хотите вызывать COM, созданный из .NET, вам следует правильно подготовить эти классы (GUID, ComVisible и т. Д.)
  2. Генерация соответствующих заголовков для C (OleView.exe может это сделать)
  3. В C используйте эти заглушки для вызова ctor, свойств, методов и т. Д.

Вот этоЭто полное пошаговое решение для вашего вопроса: http://www.codeproject.com/Articles/632616/How-to-use-NET-Csharp-COM-objects-in-plain-C

0 голосов
/ 17 декабря 2010

Библиотека типов в этом компоненте, вероятно, основана на компиляции файла IDL с помощью MIDL. MIDL создает три файла - .tlb, .c и .h. Файлы .c и .h содержат определения интерфейсов для C и C ++ - существует миллиард #ifdef __cplusplus для обеспечения идентичных определений - один набор для C, а другой для C ++.

Вы должны получить эти файлы .c и .h и включить их в свой проект. Если у вас есть исходные компоненты COM - получите эти файлы после сборки компонента. Если оно отправлено третьей стороной - свяжитесь с ним и попросите его опубликовать эти файлы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...