在C+中调用方法+;来自C#dll的应用程序

在C+中调用方法+;来自C#dll的应用程序,c#,c++,C#,C++,澄清。有一个C++ exe和一个C exe exe。C#exe是C#dll的包装器。我需要DLL调用C++代码中的记录器函数(这样只生成一个日志文件)。目前有一个C++/CLI桥,允许C++ exe调用C语言中的方法。 如果这是一个糟糕的问题,我道歉。这可能是因为我不知道要搜索什么/搜索的结果没有多大用处 我有一个用C++编写的应用程序。它调用用C#编写的工具。该工具的可执行文件似乎只是c#dll的包装。 该工具用于分析和显示数据。例如,主应用程序调用它来打开一个新文件。该工具以前从未调用C++

澄清。有一个C++ exe和一个C exe exe。C#exe是C#dll的包装器。我需要DLL调用C++代码中的记录器函数(这样只生成一个日志文件)。目前有一个C++/CLI桥,允许C++ exe调用C语言中的方法。 如果这是一个糟糕的问题,我道歉。这可能是因为我不知道要搜索什么/搜索的结果没有多大用处

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

<> P>现在需要工具调用C++应用程序中的一些方法。我不知道如何着手实施这一点。我的c#/c++/CLI经验介于贫乏和不存在之间。我开始尝试克隆C++/CLI桥并“反转”它,但由于C#代码实际上是一个库,因此从桥调用它相当简单。 但是,我不太确定(如果可能的话)如何从桥上调用C++应用程序。 目前为止,我唯一能想到的解决方案是将C代码输出到文件(或者希望共享内存),然后C++代码定期检查它。这并不接近理想

如有任何建议,将不胜感激


谢谢

好的,我想我会在这里提出一个建议

根据您的目标:

目标:从C++代码中执行C++的一些逻辑。 解决方案:这个相当简单。您将感兴趣的逻辑提取到单独的C++项目中,将其构建为库,然后在两个应用程序中使用它。正如你所说的,有很多例子说明如何从C++代码中调用C++ DLL。 目标:从C++应用程序中执行一些来自C语言应用程序的逻辑。 解决方案:这一切都需要建立进程间通信。下面列出了许多方法。我建议使用,但您可以自由选择您喜欢的w/e


编辑:根据您的编辑判断,您可能需要第二个解决方案。

这显然是一个重复的问题。你试过这个吗?我试着做相反的事。我需要C++的一个DLL来调用C++的一个方法。我所发现的一切似乎都与C++库有关。我可能有点迟钝,但我想的比你们想象的要少一些。有趣的是,我每个月左右都会看到这些问题,但很难找到它们。无论如何,答案总是saem:使用P/Invoke(硬方法),或在两者之间编写CLI层(就我而言),您可能还想澄清您的问题。你想达到什么目标?您想删除工具可执行文件并将基础.NETDLL包含到C++应用程序中吗?还是要在两个应用程序之间设置某种交互和数据交换?不太清楚。@user2036256啊,好的。我猜,我只是混淆了“C++中的C++”和“C++中的C++”。对不起,我的错。我认为你是对的,现在最简单的解决方案似乎就是拥有一个包含所有记录器代码的dll,并从两者调用它。现在看起来很简单!其中一个会让你的头撞到墙上…@user2036256在第一次接近时要小心。如果两个应用程序都使用单个dll,则仍将有两个记录器实例(每个应用程序一个)。如果这些日志记录者试图同时锁定同一个文本文件(例如用于写入),这将导致异常。这不应该发生。该代码只记录用户操作,因此,除非用户可以在windows之间移动并以比读/写速度更快的速度发出命令,否则它应该是正常的。但为了安全起见,我将添加一些基本的异常处理。谢谢