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引用类型对象。
尚不能支持的集成:(托管堆、本地堆、垃圾收集器)
托管类中存放本地对象、本地类中存放托管对象、托管堆中存放本地对象、本地堆中存放托管对象
我思故我在