从非托管c++调用c#函数(通过托管包装器)

Calling a C# function from unmanaged c++ (via a managed wrapper)

本文关键字:包装 c++ 调用 函数      更新时间:2023-10-16

我有c++源代码&我需要从c#应用程序调用一组库的头文件。我已经在我需要的函数周围创建了一个托管的c++包装器,并且能够从c#中调用它们,前后编组数据。

现在是困难的部分…

我的非托管c++库在运行时生成状态消息,我希望能够从调用c#应用程序中显示这些消息。我现在的想法是这样的:

我希望非托管c++库代码调用我的c#代码中的函数,我在创建它时传递给托管包装器。我找到了一些关于Code Project的教程,但是语法似乎已经过时了。

如果有人有一些示例代码,或者可以为我指出一个好的教程的方向,那将是伟大的。

提前感谢您的帮助。

你可以将。net委托传递给c++/CLI函数,该函数接受一个带有"匹配"参数的函数指针。

警告

  1. 指向函数的指针必须是STDCALL调用约定
  2. 如果委托是一个对象的成员,这个指向函数的指针将不被计数为保持对象存活的引用。你必须在保持回调期间维护对对象的引用

既然你认为你的例子已经过时了,我就假设你正在使用c++/CLI的新语法。下面是一个CodeProject,其中有一个示例,说明如何做到

http://www.codeproject.com/KB/mcpp/FuncPtrDelegate.aspx