如何使用非托管代码中的托管代码?

aki*_*kif 5 .net unmanaged c++-cli

如何从本机C++(非托管代码)调用.NET代码?我想将.NET代码公开给我的非托管(C++)应用程序,然后使用它们.更具体地说,我想从本机C++调用C#:).我知道有很多方法可以告诉我每种方法的优缺点吗?顺便说一句,我不想​​使用COM,那么现在有哪些选择呢?

是否有可能在C++/CLI中包装C#代码然后从C++调用它?如果是这样,我该怎么做?如何在C++/CLI中包装C#然后从C++调用它?

Rob*_*cke 5

我刚才写过这篇文章.这是关于Delphi的,但这并不意味着它也不适用于C++.

DELPHI 2009中的.NET组件

即使不太了解C++,我仍然知道IUnknown和COM兼容的接口引用应该可以在C++中使用(在需要传递对象而不仅仅是结构的情况下).

  • 您可以使用Microsoft的C++/CLI引用您的C#代码并将其导出为普通的DLL函数.
  • 您还可以下载我编写的MSBuild任务,它允许您直接从C#导出函数.类似于如何使用DllImportAttribute.

这个C#代码将导出一个函数"YourExportName",可以像使用任何c兼容函数一样使用它.


class Sample
{
   [DllExport("YourExportName")]
   static int TestFunction(int left, int right)
   {
     return left + right;
   }
}
Run Code Online (Sandbox Code Playgroud)


Dar*_*rov 0

您可以将托管组件公开为 COM 对象。