Родной C ++ Exe, общающийся с библиотекой C # - PullRequest
2 голосов
/ 25 марта 2011

У меня следующая проблема:

  1. Exe (родной C ++) реализует интерфейсы Ia и Ib.
  2. Dll1 (родной C ++) имеет класс шаблона D<T>, который реализует интерфейс Ic и вызывает в 3. Реализации Ia и Ib в Exe.
  3. Dll2 (нативный C ++) реализует класс E (класс E: public D<E>)

Во время выполнения происходит следующее: Exe загружает Dll2 (несколько экземпляров) и создает экземпляр E, предоставляя ему указатели на его указатели Ia и Ib. Exe "получает" Ic указатель от Dll2.

Теперь я должен разрешить реализацию Dll2 (s) в C #, чтобы Exe мог вызывать Ic Impl в Dll2. и Dll2 не может перезвонить Ia и Ib I-лиц Exe. Еще одно ограничение: мне не нужно перекомпилировать Exe и Dll1 каждый раз, когда появляется новая реализация Dll2.

Возможно ли реализовать что-то подобное?

1 Ответ

5 голосов
/ 25 марта 2011

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

Я бы указал вам на COM.Управляемый код может предоставлять свои интерфейсы в виде объектов COM, а C ++ может их использовать.И наоборот.

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