0

澄清。有一个 C++ exe 和一个 C# exe。C# exe 是 C# dll 的包装器。我需要 dll 来调用 C++ 代码中的记录器函数(以便只生成一个日志文件)。目前有一个 c++/CLI 桥允许 C++ exe 调用 C# dll 中的方法。

抱歉,如果这是一个糟糕的问题。它可能是我只是不知道要搜索什么/我正在搜索的结果没有多大用处的情况。

我有一个用 C++ 编写的应用程序。它调用了一个用 C# 编写的工具。看来该工具的可执行文件只是 ac# dll 的包装器。该工具的目的是分析和显示数据。例如,主应用程序调用它来打开一个新文件。该工具以前从未调用过 C++ 代码中的任何内容,因此这一直是一种方式。它似乎是通过 C++/CLI 桥实现的。桥接调用工具 api 中的函数。

该工具现在需要调用 C++ 应用程序中的某些方法。我不知道如何实现这一点。我的 c#/C++/CLI 经验介于差和不存在之间。我首先尝试克隆 C++/CLI 桥并“反转”它,但由于 C# 代码实际上是从桥中调用它的库,因此相当简单。但是,我不太确定(如果可能的话)如何从网桥调用 C++ 应用程序。

到目前为止,我能想到的唯一可行的解​​决方案是将 c# 代码输出到文件(或希望共享内存),然后 c++ 代码定期检查它。这并不接近理想。

任何意见,将不胜感激。

谢谢

4

1 回答 1

1

Ok, i think i'll throw in a suggestion here.

Depending on what your goal is:

1) Goal: execute some of your c++ logic from c# code.

Solution: this one is fairly simple. You extract logic of interest into separate C++ project, build it as a library and then use it in both applications. As you said, there are plenty examples on how to call c++ dll from c# code.

2) Goal: froce your c++ application to execute some of it's logic from C# application.

Solution: it all comes to setting up an interprocess communication. There are quite a few approaches, that are listed here. I suggest using NamedPipes but you are free to pick w/e you are comfortable with.

Edit: Judging by your edit you probably want the second solution.

于 2013-06-27T09:24:45.347 回答