你能从c ++运行C#代码吗? 怎么样?
答案 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执行此操作时,我花了两个星期的时间来完成它。
本页的答案提供了执行此操作所需程序的指导。
答案 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 ++。