Взаимодействие с C ++: как мне вызвать класс C # из собственного C ++, если этот класс нестатичен?

У меня есть большое приложение, написанное на родном C ++. У меня также есть класс на C #, который мне нужно вызвать.

Если бы класс C # был статическим, это было бы тривиально (в Интернете много примеров) - просто напишите смешанную оболочку C ++ / CLI, экспортируйте интерфейсы , и все готово.

Однако класс C # нестатичен и может ' t можно изменить на статический, поскольку у него есть интерфейс (компилятор выдаст ошибку, если вы попытаетесь сделать класс C # статическим).

Кто-нибудь сталкивался с этой проблемой раньше - как мне экспортировать нестатический класс C # в родной C ++?


Обновление 2010-11-09

Окончательное решение: попробовал COM, он работал нормально, но не поддерживал структуры. Итак, я пошел с оболочкой C ++ / CLI, потому что мне абсолютно необходимо было иметь возможность передавать структуры между C ++ и C #. Я написал оболочку .dll для смешанного режима, основанную на приведенном здесь коде:

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

Свяжитесь со мной, если вы хотите, чтобы я опубликовал демонстрационный проект (хотя, честно говоря, я вызываю C # из C ++, а в наши дни большинство людей хотят вызывать C ++ из C #).

7
задан 6 revs 9 November 2010 в 10:35
поделиться