У меня есть большое приложение, написанное на родном C ++.У меня также есть класс в C #, который мне нужно вызвать.
Если бы класс C # был статическим, то это было бы тривиально (есть много примеров в Интернете) - просто напишите смешанную оболочку C ++ / CLI,экспортируйте интерфейсы, и все готово.
Однако класс C # не является статичным и не может быть изменен на статический, поскольку у него есть интерфейс (компилятор выдаст ошибку, если вы попытаетесьсделать класс C # статическим).
Кто-нибудь сталкивался с этой проблемой раньше - как экспортировать нестатический класс C # в собственный C ++?
Обновление 2010-11-09
Окончательное решение: пробовал COM, это работало хорошо, но не поддерживало структуры.Итак, пошел с оболочкой C ++ / CLI, потому что мне абсолютно необходимо было иметь возможность передавать структуры между C ++ и C #.Я написал оболочку .dll в смешанном режиме на основе кода:
Поскольку целевой класс был нестатичным, мне пришлось использовать шаблон синглтона, чтобы убедиться, что я был толькосоздание одной копии целевого класса.Это гарантировало, что все было достаточно быстро, чтобы соответствовать спецификациям.
Свяжитесь со мной, если хотите, чтобы я опубликовал демонстрационный проект (хотя, если честно, я звоню C # из C ++, и в настоящее время большинство людей хотятвызов C ++ из C #).