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

时间:2011-04-25 16:13:03

标签: c# c++ callback unmanaged managed

我有C ++源码&我需要从C#应用程序调用的一组库的标头。我已经创建了一个围绕我需要的函数的托管C ++包装器,并且能够从C#调用它们来向前和向后编组数据。

现在困难的部分..

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

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

如果有人有一些示例代码,或者可以指向一个很好的教程的方向。

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

您可以将.NET委托传递给C ++ / CLI函数,该函数接受指向具有“匹配”参数的函数的指针。

注意事项

  1. 指向函数的指针必须是STDCALL调用约定
  2. 如果委托是对象的成员,则此指向函数的指针不会计为保持对象处于活动状态的引用。您必须在回调持有期间维护对象的引用
  3. 由于您认为您的示例已过时,我将假设您使用的是C ++ / CLI的新语法。这是一个CodeProject,其中包含如何执行此操作的示例

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

相关问题