如何从c ++中调用C#

时间:2010-11-26 06:24:29

标签: c# c++

我想知道从C ++(Native,而不是C ++ CLI)代码调用c#类方法的方法是什么?需要简单而优雅的方式

4 个答案:

答案 0 :(得分:11)

您可以使用所谓的“CLR Hosting”在本机C ++程序中嵌入任何CLR程序集(C#,VB.NET,F#,...)。这就是本机程序(如SQL Server)支持.NET代码扩展的方式。例如。 SQL Server中的 SQL CLR

使用CorBindToRuntimeEx() for .NET 2.0和{4}}在.NET 4中将CLR加载到本机进程。

详细信息可以在CLRCreateInstance()或Jeff Richter的书MSDN上找到。

答案 1 :(得分:10)

将C#程序集转换为COM可见程序集并使用COM接口。据我所知,这是使它在自制IPC旁边工作的唯一方法。问题来自.NET环境,在该环境下.NET程序集必须运行,C ++在其本机C ++环境下运行。

唯一的通信方式是IPC机制(套接字,......)或使用COM,因为进程必须“解耦”。

以下是基于COM的解决方案的教程:

答案 2 :(得分:9)

Sasha Goldshtein是这个人的人:

还有几种方法可以做到: 1.反向P / Invoke(必须从作为回调传递的.NET委托开始,所以这只有在你的.NET代码中开始“动作”时才有用); 2. COM interop(每个.NET类也可以是一个COM对象,有或没有显式接口); 3. C ++ / CLI包装器类。

请参阅http://blogs.microsoft.co.il/blogs/sasha/archive/2008/02/16/net-to-c-bridge.aspx

另见:
http://www.gregcons.com/KateBlog/CallingManagedCodeFromNativeCode.aspx

答案 3 :(得分:-1)

最简单的方法是使用C ++ / CLI。如果您不能在代码中使用它,请编写一个包装器DLL并调用该DLL。