当前位置: 首页> 教育> 高考 > 千锋教育培训怎么样_网络安全哪个培训班比较好_深圳百度seo公司_无锡网站服务公司

千锋教育培训怎么样_网络安全哪个培训班比较好_深圳百度seo公司_无锡网站服务公司

时间:2025/7/10 3:25:05来源:https://blog.csdn.net/qq_36651243/article/details/143995463 浏览次数:0次
千锋教育培训怎么样_网络安全哪个培训班比较好_深圳百度seo公司_无锡网站服务公司

托管C++与C++/CLI前世今生

C++/CLI (C++/Common Language Infrastructure) 是一种用于编写托管代码的语言扩展,它是为了与 .NET Framework 进行互操作而设计的。C++/CLI 是 C++ 的一种方言,它引入了一些新的语法和关键字,以便更好地支持 .NET 类型和垃圾回收。

托管C++ (Managed Extensions for C++) 是早期的一种用于编写托管代码的语言扩展,它也是为了与 .NET Framework 进行互操作而设计的。托管C++ 是 C++ 的一种扩展,但它的语法和使用方式相对复杂和不直观。

以下是 C++/CLI 和托管C++ 的一些主要区别:

  1. 语法和关键字:
    C++/CLI 引入了新的语法和关键字,如 ref class^ (句柄) 和 gcnew
    使得编写托管代码更加直观和简洁。
    托管C++ 使用 __gc__value 等前缀来标识托管类型,语法相对复杂。

  2. 类型系统:
    C++/CLI 更好地集成了 .NET 类型系统,支持泛型、委托和事件等特性。
    托管C++ 对 .NET 类型系统的支持较为有限,使用起来不如 C++/CLI 方便。

  3. 性能和优化:
    C++/CLI 在性能和优化方面进行了改进,生成的代码更高效。
    托管C++ 的性能相对较差,生成的代码效率不如 C++/CLI。

  4. 兼容性和支持:
    C++/CLI 是当前主流的用于编写托管代码的 C++ 扩展,得到了更好的支持和维护。
    托管C++ 已经被弃用,不再推荐使用。

参考文献
Managed Extensions for C++
C++/CLI

代码示例

C++部分

//.h
#ifndef HEADER_H
#define HEADER_H#include <stdio.h>
#include <stdlib.h>
#include <iostream>using namespace std;#ifdef MYCLASS_EXPORTS
#define MYCLASS_EXPORTS __declspec(dllexport)
#else
#define MYCLASS_EXPORTS __declspec(dllimport)
#endifextern "C" MYCLASS_EXPORTS int Add(int numberA, int numberB);class MyClass
{public:MyClass();~MyClass();};#endif // !HEADER_H//c.pp
#include "header.h"MyClass::MyClass()
{
}MyClass::~MyClass()
{
}MYCLASS_EXPORTS int Add(int numberA, int numberB)
{// 计算两个数的和int result = numberA + numberB;// 返回结果return result;
}

1.设置预处理器
在这里插入图片描述

2.输出dll
在这里插入图片描述

CLR部分

//.h
#ifndef HEADER_H
#define HEADER_H#include <iostream>
#include "../MyDll/header.h"//引用库声明对应文件路径public ref class MyClrClass
{
public:MyClrClass();int AddCode(int numberA, int numberB);
};#endif // !HEADER_H//.cpp
#include "header.h"MyClrClass::MyClrClass()
{
}int MyClrClass::AddCode(int numberA, int numberB)
{return Add(numberA, numberB);
}

1.修改公共语言运行时支持
在这里插入图片描述
2.设置语言符合模式
在这里插入图片描述

3.引用前面c++部分
在这里插入图片描述

在这里插入图片描述
4.输出目标dll
在这里插入图片描述

C#调用部分

var a = 10;
var b = 20;
var invoke = new MyClrClass();
var addResult = invoke.AddCode(a, b);
Console.WriteLine($"Add result is {addResult}");

添加CLR dll
在这里插入图片描述

输出结果
在这里插入图片描述

关键字:千锋教育培训怎么样_网络安全哪个培训班比较好_深圳百度seo公司_无锡网站服务公司

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: