如何使用托管代码从非托管代码?
问题描述:
如何从本机C++(非托管代码)调用.NET代码?我想将.NET代码暴露给我的非托管(C++)应用程序,然后使用它们。更具体地说,我想从本机C++调用C#)。我知道有很多方法,但你能告诉我每个人的利弊吗?顺便说一句,我不想使用COM,所以现在有什么选择?如何使用托管代码从非托管代码?
是否有可能我用C++/CLI封装C#代码,然后从C++调用它?如果是这样,我该怎么做?如何在C++/CLI中包装C#,然后从C++调用它?
答
我写这件事刚刚结束。这是关于德尔福的,但这并不意味着它也不适用于C++。
即使不知道太多关于C++,我还是知道IUnknown和COM兼容的接口引用应该是使用由C就好++(在你需要传递对象,不只是结构的情况下)。
- 您可以使用Microsoft的C++/CLI引用您的C#代码并将其导出为普通的DLL函数。
- 您还可以下载我编写的MSBuild task,它允许您直接从C#中导出函数。类似于如何使用DllImportAttribute。
此C#代码将导出一个函数“YourExportName”,可以像使用任何c兼容函数一样使用该函数。
class Sample
{
[DllExport("YourExportName")]
static int TestFunction(int left, int right)
{
return left + right;
}
}
[将dll函数导出到非托管程序](http://stackoverflow.com/questions/12647766/exporting-dll-functions-to-unmanaged-programs) – Rohit 2013-10-18 04:39:48