如何将C ++可执行文件P /调用到C#中

时间:2019-05-15 16:33:11

标签: c# c++ .net interop pinvoke

我有一个C ++应用程序,它是从.cpp文件进行g ++编译的可执行文件。现在,我想在此.cpp文件中或/可在我的C#应用​​程序中执行这些方法。

我一直在寻找各种方法来做到这一点,并且遇到了P / Invoke。但是,听起来C / P调用C ++应用程序的起点是它必须是DLL。我没有DLL,而是拥有此可执行文件。

我该怎么做才能使此代码在C#P / Invoke层中可引用?

2 个答案:

答案 0 :(得分:2)

  

但是,听起来p / invoke C ++应用程序的起点是它必须是DLL。我没有DLL,而是拥有此可执行文件。

对于p / invoke,您需要将所需的功能编译到DLL中。您不能将可执行文件加载到另一个进程中。

您可以在另一个进程中运行可执行文件,并通过某种形式的IPC与可执行文件进行通信。一个这样的选项将是进程外COM服务器。

但是我怀疑最简单的方法是将代码编译为DLL。

答案 1 :(得分:-1)

DLL和EXE都是Windows PE文件,因此任何一个都可以正常工作。 您只需要确保要调用的函数已正确导出即可。

您将需要为要导出的所有内容创建C包装函数。 将extern "C" __declspec(dllexport)添加到其原型中,然后使用它们来调用所需的C ++代码。