什么是托管C++ (managed C++)

托管C++ (managed C++) 实际名称是 “Managed Extensions for C++”, 即C++托管扩展,是一种不同于C++的语言, 是旧有的东西,现在已经被废弃,C++托管代码的现代扩展叫做C++/CLI。

Managed C++ is used for .Net development in the Common Language Runtime (CLR) of Microsoft. This special C++ syntax was created to allow C++ developper to come in the .Net community without learning a new language like C#.

托管C++用于微软的 Common Language Runtime (CLR) .NET开发,这种特殊的C++语法能够使C++程序员进行.NET开发,而不需要学一门像C#这样的新语言。

托管C++极其难以使用,而C++/CLI虽然仍不完美,但是远比托管C++好用。

使用C++/CLI(取代了托管C++) 的唯一原因是,为C#/.NET 和 原生C++代码提供二者之间的桥梁,除此之外,任何地方都用不到C++/CLI。

C++/CLI是C++的.Net实现,Microsoft为了使C++开发人员能更容易掌握managed framework而设计了C++/CLI,然而如今很少使用,因此要找到好的C++/CLI教程也很难。

如果确定要使用.NET开发项目,最好还是花一天半天的时间学习一下C#,如果有C++ 经验,C#很好学。


[1] https://stackoverflow.com/questions/2718645/managed-c-prospects
[2] https://stackoverflow.com/questions/1553914/new-keywords-and-new-type-of-pointers-in-visual-c-2005-what-is-managed-c?noredirect=1

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 C# 中调用 C++ 的类可以使用 C++/CLI(Managed C++)来实现。C++/CLI 是一种混合语言,可以同时使用 C++ 和 C#。通过创建一个 C++/CLI 类,将 C++ 类包装为公共成员,并在 C# 中直接调用该类的方法。 以下是一个示例: ```cpp // C++ Class class MyCppClass { private: int value; public: MyCppClass(int v) : value(v) {} int GetValue() { return value; } }; ``` ```cpp // C++/CLI Wrapper #pragma managed #include "MyCppClass.h" public ref class MyCppWrapper { private: MyCppClass* cppClass; public: MyCppWrapper(int v) { cppClass = new MyCppClass(v); } ~MyCppWrapper() { delete cppClass; } int GetValue() { return cppClass->GetValue(); } }; ``` ```c# // C# 使用 C++/CLI Wrapper class Program { static void Main(string[] args) { MyCppWrapper wrapper = new MyCppWrapper(42); int value = wrapper.GetValue(); Console.WriteLine(value); // 输出 42 } } ``` 在这个示例中,我们创建了一个 C++ 类 `MyCppClass`,并使用 C++/CLI 创建了一个包装器类 `MyCppWrapper`。在 `MyCppWrapper` 中,我们实例化了 `MyCppClass` 的对象,并将其封装在公共成员方法中,以供 C# 调用。 请注意,C++/CLI 项目需要将 `Common Language Runtime Support` 设置为 `/clr`。另外,如果 C++ 类有其他依赖项,需要在 C++/CLI 项目中引用这些依赖项。 使用 C++/CLI 可以方便地在 C# 中调用 C++ 的类和方法,但需要注意确保 C++ 类的可访问性和正确的函数签名,以便在 C# 中正确使用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值