澄清。有一个C ++ exe和一个C#exe。 C#exe是C#dll的包装器。我需要dll在C ++代码中调用记录器函数(这样只生成一个日志文件)。目前有一个c ++ / CLI桥接器,它允许C ++ exe调用C#dll中的方法。
如果这是一个糟糕的问题,请道歉。它可能是一个例子,我只是不知道搜索什么/我搜索的结果没什么用处。
我有一个用C ++编写的应用程序。它调用用C#编写的工具。看来该工具的可执行文件只是c#dll的包装器。 工具的目的是分析和显示数据。主应用程序调用它例如让它打开一个新文件。该工具从未在C ++代码中调用过任何东西,所以这一直是一种方式。它似乎是通过C ++ / CLI桥实现的。桥接器调用工具api中的函数。
现在需要该工具调用C ++应用程序中的某些方法。我不知道如何实现这个。我的c#/ C ++ / CLI经验介于穷人和不存在之间。我开始尝试克隆C ++ / CLI桥并“反向”它,但由于C#代码实际上是一个从桥接器调用它的库非常简单。 但是,我不确定(如果它甚至可能)如何从桥上调用C ++应用程序。
到目前为止,我能想到的唯一可行解决方案是将c#代码输出到文件(或希望共享内存),然后c ++代码定期检查它。这并不接近理想。
任何建议都将受到赞赏。
由于
答案 0 :(得分:1)
好的,我想我会在这里提出一个建议。
取决于您的目标:
1)目标:从c#代码中执行一些c ++逻辑。
解决方案:这个很简单。您将感兴趣的逻辑提取到单独的C ++项目中,将其构建为库,然后在两个应用程序中使用它。正如你所说,有很多关于如何从c#代码调用c ++ dll的例子。
2)目标:让你的c ++应用程序从C#应用程序中执行它的一些逻辑。
解决方案:这一切都是为了建立进程间通信。列出here的方法很多。我建议使用NamedPipes,但你可以自由选择适合你的人。
编辑:根据您的编辑判断,您可能需要第二个解决方案。