一:托管与非托管:
非托管指的是可以直接编译成机器码的代码;而托管是依靠一个环境才能执行的代码,它通常是被编译成中间代码,比如C#,VB.NET等等编写的代码;CLR指的是公共语言运行时和Java虚拟机一样也是一个运行时环境,它负责资源管理(内存分配和垃圾收集),并保证应用和底层操作系统之间必要的分离。
二:可以编写托管代码和非托管代码的C++
现在的Microsoft® Visual C++® .NET可以使用 C++ 托管扩展来编写托管代码。
三:托管代码与非托管代码相互调用
我以C#和C++为例:
1、 C#托管代码调用C++非托管代码:把C++编译成动态链接库,这样C#就可以调用了。
2、 C++非托管代码调用C#托管代码:把C#写成COM组件,这样C++就可以调用了。