从C#调用C ++ exe函数
我正在尝试使用不同的C#应用程序监视用C ++编写的正在运行的应用程序。
在我的C ++代码中,我定义了一个API:
_declspec(dllexport) //is this even possible when compiling an .exe? int getSomething();
有没有办法从C#代码调用此函数?
经典方法是否有效:
[DllImport("myexe.exe", CharSet = CharSet.Auto)] public static extern int getSomething();
是的,任何PE可执行文件都可以这样导出函数。 请记住,编译器有时会破坏导出名称,导致像这样的东西:
MyAPIFunction@16
您可以通过将可执行文件加载到PEInfo等工具中来检查名称是否正常。
您应该能够以与DLL中的函数完全相同的方式调用它。
更新确定,所以看起来你想要IPC,而不是P / Invoke调用。 有关如何在C#中使用命名管道的信息,请参阅此页面 。 这里是一个很好的地方,开始寻找有关如何在C ++中使用命名管道的信息。
是的,您可以从.dll
导出函数,就像从.dll
导出函数一样,并且您显示的方式是正确的方法。
不,您无法通过这样做与现有流程进行交互,就像从.dll
加载函数不允许您使用该.dll
与其他流程进行交互一样。