我有一个C ++应用程序,它是从.cpp文件进行g ++编译的可执行文件。现在,我想在此.cpp文件中或/可在我的C#应用程序中执行这些方法。
我一直在寻找各种方法来做到这一点,并且遇到了P / Invoke。但是,听起来C / P调用C ++应用程序的起点是它必须是DLL。我没有DLL,而是拥有此可执行文件。
我该怎么做才能使此代码在C#P / Invoke层中可引用?
答案 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 ++代码。