你能从c ++运行C#代码吗?

时间:2009-10-09 01:21:55

标签: c# .net c++ clr

你能从c ++运行C#代码吗? 怎么样?

7 个答案:

答案 0 :(得分:18)

如果您的C ++代码是基于.NET公共语言运行时(CLR)构建的“托管”C ++,那么很容易引用C#程序集并调用公共类和方法。但是,如果您的C ++代码是“本机”(不是构建在CLR上),那么您将需要为COM interop注册C#程序集并从C ++代码中调用COM对象。有一篇MSDN文章涵盖了所有的血腥细节:

http://msdn.microsoft.com/en-us/library/w29wacsy(VS.80).aspx

还有一篇关于CodeProject的文章,尼克帕克称之为“Exposing .NET Components to COM”,你可能觉得它很有用。

答案 1 :(得分:1)

您可以使用非托管C ++来运行.NET应用程序,但它的难度取决于您使用的.NET版本。

当我使用.NET 2.0执行此操作时,我花了两个星期的时间来完成它。

本页的答案提供了执行此操作所需程序的指导。

http://www.pcreview.co.uk/forums/thread-1225474.php

答案 2 :(得分:1)

根据您尝试做的事情,您拥有的另一个选项是在您的应用程序中托管CLR,这样您就可以比通过COM更加紧密地集成C#代码。您可以在此MSDN Magazine article中阅读此操作的概述。

答案 3 :(得分:0)

使用C ++ / CLI,是(以前是Managed C ++ - 它有不同的语言扩展名)。

答案 4 :(得分:0)

是的,您可以使用COM来调用.NET

答案 5 :(得分:0)

您可以使用mscoree.dll ClrCreateManagedInstance Function在没有COM的情况下调用.NET代码。您需要在pTypeName参数中提供要创建的类型名称的assembly qualified name

在内存中,在某些情况下,您可能需要使用ClrCreateManagedInstance()将ComVisible属性添加到要访问的接口或类中。但是,这并不要求您也注册您的类或与COM一起使用的任何其他混乱部署问题。

答案 6 :(得分:0)

我猜测对乍得真正有用​​的答案是:

是的,从技术上讲,从C ++运行C#代码绝对是可行的。但是,如果这个页面上的其他答案听起来像是在他们头脑中,那么你就没有足够的经验来实际做到这一点。考虑到所有事情都很难实现,所以除非你真的需要从C ++运行C#代码,否则最好只将C#代码重写为C ++。