托管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++ 的一些主要区别:
-  语法和关键字: 
 C++/CLI 引入了新的语法和关键字,如ref class、^(句柄) 和gcnew,
 使得编写托管代码更加直观和简洁。
 托管C++ 使用__gc、__value等前缀来标识托管类型,语法相对复杂。
-  类型系统: 
 C++/CLI 更好地集成了 .NET 类型系统,支持泛型、委托和事件等特性。
 托管C++ 对 .NET 类型系统的支持较为有限,使用起来不如 C++/CLI 方便。
-  性能和优化: 
 C++/CLI 在性能和优化方面进行了改进,生成的代码更高效。
 托管C++ 的性能相对较差,生成的代码效率不如 C++/CLI。
-  兼容性和支持: 
 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)
#endif
extern "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
 
输出结果
 

![[RabbitMQ] 重试机制+TTL+死信队列](https://i-blog.csdnimg.cn/direct/2badab32865f4a0f920df8fbb7750e28.png)

















