Visual C++ 2005 系列课程学习笔记-2
2008-09-04 03:26
281 查看
Visual C++ 2005中实现C++与CLI的集成
Visual C++ 2005基于CLI虚拟机平台,而C++基于本地机平台。因此,Visual C++ 2005和C++两者存储对象的空间位置不同,Visual C++ 2005存储在托管堆中,而C++存储在本地堆中。
Visual C++ 2005支持本地编程和托管编程的无缝集成,其本质是实现了对象模型的集成。
1、源代码集成
源代码集成即在Visual C++ 2005中利用cl /clr命令直接对C++源代码进行编译。
内部机理:IJW(it just works)
(1)绝大多数C++代码编译后将得到托管代码,即IL代码。部分不能编译为IL代码的采用平台调用服务PInvoke来实现。
(2)只进行代码的托管,而不进行数据的托管(C++本地堆内的数据不被托管)。
2、对象集成
利用CLI虚拟机平台将C++指针或对象实例封装到Visual C++ 2005的一个引用类型对象中。
3、不同语言互操作
其它语言来调用封装了C++指针的Visual C++ 2005引用类型对象。
尚不能支持的集成:(托管堆、本地堆、垃圾收集器)
托管类中存放本地对象、本地类中存放托管对象、托管堆中存放本地对象、本地堆中存放托管对象
Visual C++ 2005基于CLI虚拟机平台,而C++基于本地机平台。因此,Visual C++ 2005和C++两者存储对象的空间位置不同,Visual C++ 2005存储在托管堆中,而C++存储在本地堆中。
Visual C++ 2005支持本地编程和托管编程的无缝集成,其本质是实现了对象模型的集成。
1、源代码集成
源代码集成即在Visual C++ 2005中利用cl /clr命令直接对C++源代码进行编译。
内部机理:IJW(it just works)
(1)绝大多数C++代码编译后将得到托管代码,即IL代码。部分不能编译为IL代码的采用平台调用服务PInvoke来实现。
(2)只进行代码的托管,而不进行数据的托管(C++本地堆内的数据不被托管)。
2、对象集成
利用CLI虚拟机平台将C++指针或对象实例封装到Visual C++ 2005的一个引用类型对象中。
3、不同语言互操作
其它语言来调用封装了C++指针的Visual C++ 2005引用类型对象。
尚不能支持的集成:(托管堆、本地堆、垃圾收集器)
托管类中存放本地对象、本地类中存放托管对象、托管堆中存放本地对象、本地堆中存放托管对象
相关文章推荐
- Visual C++ 2005 系列课程学习笔记-8
- Visual C++ 2005 系列课程学习笔记-9
- Visual C++ 2005 系列课程学习笔记-1
- Visual C++ 2005 系列课程学习笔记-3
- Visual C++ 2005 系列课程学习笔记-4
- Visual C++ 2005 系列课程学习笔记-6
- Visual C++ 2005 系列课程学习笔记-5
- Visual C++ 2005 系列课程学习笔记-7
- Andrew NG机器学习课程笔记系列之——机器学习之神经网络模型-下(Neural Networks: Representation)
- sql server 2005下载|学习|教程|笔记系列文章
- NodeJS学习系列课程笔记(NodeJs 快速上手+用法示例)
- NodeJS学习系列课程笔记(NodeJs REPL相关使用方法)
- AI角 | 把吴恩达深度学习系列课程画出来,这有份诚意满满的笔记求查收
- 【学习】构建WCF面向服务的应用程序系列课程笔记:(1) WCF概要
- SQL Server 2005盛宴系列之一:SQL Server 2005产品简介-----学习笔记
- 1自定义View系列课程学习笔记——之手势处理
- SQL Server 2005 学习笔记系列文章导航
- NodeJS学习系列课程笔记(NodeJs Stream 的相关使用方法)
- NodeJS学习系列课程笔记(NodeJs EventEmitter相关使用方法)
- 3自定义View系列课程学习笔记——之Measure测量