从c#调用c++的exe函数
本文关键字:exe 函数 c++ 调用 | 更新日期: 2023-09-27 18:10:29
我正在尝试使用不同的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++中使用命名管道信息的好地方。
是的,您可以从.exe
导出函数,就像您可以从.dll
导出函数一样,您所展示的方法是正确的。
不,你不能通过这样做与现有进程交互,就像从.dll
加载函数不允许你使用.dll
与其他进程交互一样。