Примеры создания простого компонента COM с использованием C ++ в Visual Studio 2008 - PullRequest
0 голосов
/ 21 июля 2010

Кто-нибудь знает какие-либо недавние примеры создания простого COM-компонента в C ++ с использованием Visual Studio 2008, чтобы я мог научиться распределять различные типы данных между неуправляемым и управляемым кодом и обратно Я нашел несколько учебных пособий, которые предлагают проект C ++ ATL, но на странице настроек проекта больше нет настроек, упомянутых в статье.

Что я хочу сделать, это реализовать C ++ DLL, которая будет использоваться из C #, например:

MyComComponent myComp = new MyComComponent();
myComp.Register(new ClassWithCallbacks()) /* implements IMyCallback */

Компонент COM через определенные промежутки времени будет вызывать различные методы в предоставленном экземпляре IMyCallback для получения информации. Аналогично, код C # может вызывать различные методы напрямую, когда это необходимо.

Этот механизм позволяет мониторить приложение либо (сторона C ++), опрашивая сторону C #, либо стороной C #, сообщающей обратно стороне C ++.

1 Ответ

1 голос
/ 21 июля 2010

Вы можете начать с Пошаговое руководство. Создание COM-сервера с помощью текстового редактора . В нем показано, как это сделать, используя атрибуты COM вместо IDL, но для ваших целей этого должно быть достаточно.

Если вам нужно больше примеров ATL, в разделе Общие примеры ATL есть набор примеров, которые реализуют различные функции COM, как в режиме in-proc, так и вне сервера, и используя IDL вместо атрибутов. , Вы можете скачать любой из них и настроить его для своих целей. Я бы наверное начал с BEEPER .

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

...