从本机C调用.NET托管代码

时间:2010-07-30 20:01:16

标签: .net c windows

我需要能够在本机C的DLL中调用.NET 3.5托管代码。我没有提供.h或.lib文件。
我已经尝试制作一个C ++ DLL来暴露一个C兼容的接口,但我似乎无法包含我需要在我的项目中使用的DLL。

有没有办法从本机C调用.NET托管代码?

2 个答案:

答案 0 :(得分:6)

纯托管代码永远不会为您提供标头或库 - 它依赖于.NET框架的元数据功能,而不是让编译器确定适当的API。

从C使用托管程序集的最简单方法是使用C ++ / CLI围绕托管代码创建本机包装器。然后,您可以从此DLL公开C API,并像调用任何其他C / C ++ DLL一样调用它。

答案 1 :(得分:3)

你应该看看Unmanaged Exports,你可以NuGet package获得。这是根据作者的描述:

  

一组编译时库(无需部署)和一个构建任务,使您可以将函数从托管代码导出到本机应用程序。这意味着,您可以使用C#或F#等托管语言为仅具有C-Api(如Notepad ++)的本机应用程序创建插件。 nuget包就是您所需要的。只需使用[DllExport]标记您的方法,然后为x86,x64或ia64构建。