如何使用托管代码从非托管代码?(How to use managed code from unman

2019-09-01 21:06发布

如何调用来自本地C ++(非托管代码)一个.NET代码? 我要揭露.NET代码到我的非托管(C ++)应用程序,然后使用它们。 更具体地讲,我想从本地C调用C#++ :)。 我知道有很多方法,但你能告诉我每个利弊? 顺便说一句,我不希望使用COM等什么是选择现在?

难道我换了C#代码在C ++ / CLI,然后从C ++调用它呢? 如果是这样,我怎么做呢? 如何换行C#在C ++ / CLI,然后从C ++调用它呢?

Answer 1:

我写这件事刚刚结束。 这是德尔福,但是,这并不意味着它不会使用C ++的工作,以及。

在2009年DELPHI .NET组件

即使不知道关于C ++多,我仍然知道IUnknown和COM兼容的接口引用应该是使用由C就好++(在你需要传递对象,不只是结构的情况下)。

  • 您可以使用微软的C ++ / CLI参考你的C#代码,并将其导出为普通的DLL函数。
  • 您也可以下载一个MSBuild任务我写的,它允许你直接从C#导出功能。 类似于DllImportAttribute是如何使用的。

这个C#代码将出口可用于就像将被用于任何C兼容功能的函数“YourExportName”。


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


Answer 2:

你总是可以嵌入单声道。 我个人在两个项目做了到目前为止,很容易不够。 按照嵌入单以获取更多信息。



Answer 3:

你可以暴露出的管理组件作为COM对象。



Answer 4:

检查如何调用来自本机的Visual C托管DLL ++在Visual Studio.NET或Visual Studio 2005中的代码



文章来源: How to use managed code from unmanaged code?