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

5
如何从本机C++(非托管代码)调用.NET代码?我想将.NET代码暴露给我的非托管(C ++)应用程序,然后使用它们。更具体地说,我想从本机C++调用C# :). 我知道有很多方法,但你能告诉我每种方法的优缺点吗?顺便说一下,我不想使用COM,那么现在有哪些选项?
是否可以将C#代码包装在C ++ / CLI中,然后从C ++调用它?如果可以,我该如何做?如何在C ++ / CLI中包装C#,然后从C ++调用它?

可能是将DLL函数导出到非托管程序的重复问题。 - Rohit
4个回答

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;
   }
}

1

您可以随时嵌入Mono。我个人已经在两个项目中这样做了,而且很容易。请参考嵌入Mono获取更多信息。


0

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



网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接