Native C ++ Exe与C#库通信

时间:2011-03-25 11:18:26

标签: c# c++ interop command-line-interface

我遇到以下问题:

  1. Exe(native C ++)实现接口Ia和Ib。
  2. Dll1(本机C ++)有一个模板类D<T>,它实现接口Ic并调用3. Exe的Ia和Ib的实现。
  3. Dll2(原生C ++)实现了一个E类(E类:public D<E>
  4. 在运行时发生以下情况:Exe加载Dll2(几个实例)并实例化E,为其提供指向其Ia和Ib指针的指针。 Exe从Dll2“获取”Ic指针。

    现在,我必须允许在C#中实现Dll2(s),以便Exe可以调用Dll2的Ic impl。和Dll2可以回叫Exe的Ia和Ib i-faces。进一步限制,每次弹出新的Dll2实现时,我都不必重新编译Exe和Dll1。

    是否有可能实现这样的目标?

1 个答案:

答案 0 :(得分:5)

我认为你将不得不放弃继承,这在跨模块边界应用时已经是一个相当脆弱的工具。

我会指向COM。托管代码可以将其接口公开为COM对象,C ++可以使用它们。反之亦然。