我有一个用 C++ 编写的 DLL,我想将 C# 函数传递给 C++ DLL 中的函数并从 C++ 调用 C# 函数。我该怎么做?提前致谢,请让您的回答简单明了。我认为我不需要为此发布代码示例,但如果您需要,请询问。
最佳答案
通常有两种方法可以实现此目的:COM Interop 和 Reverse PInvoke。如果您要传递大量具有行为的对象,那么 COM 互操作可能是您最好的选择。在这里,虽然听起来您只是想传递一个函数。如果是这样,那么 Reverse PInvoke 就是您想要的。
这是关于这个主题的一个很好的教程
- http://tigerang.blogspot.com/2008/09/reverse-pinvoke.html
- http://blogs.msdn.com/b/thottams/archive/2007/06/02/pinvoke-reverse-pinvoke-and-stdcall-cdecl.aspx
虽然基本过程与普通 PInvoke 非常相似。
- 定义一个至少接受一个函数指针的 native 入口点
- 在托管代码中将 native 指针定义为委托(delegate)
- 通过入口点向下传递委托(delegate)
现在可以在本地代码中将其作为普通函数指针调用
关于c# - 从 C++ DLL 调用 C# 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9552498/