- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
,, * ,, ,, * ,, ,, * ,, ,, * ,, ,, * ,, ,, * ,, ,, * ,, ,, * ,, ,, * ,, ,, * ,, DEV349Visual C++ 2005 无缝集成,无限潜力 李建忠 微软特约讲师 上海祝成科技 VC++ 2005的内核语言为C++/CLI,是目前.NET平台上能力最接近IL代码的系统级语言 无缝集本钱地代码与托管代码,支持混合程序集 同时支持CLR泛型与ISO-C++模板 支持多种框架类库,Win32 , MFC , COM, STL, ATL, .NET 框架类库 高度优化的代码,是所有.NET语言中优化程度最高的代码 C++/CLI不是ISO-C++与C#的简单相加,而是一门全新的语言! VC++ 2005 集成潜力 C++ ? CLR= Visual C++ 2005 C++ 技术特点: 静态化的对象模型 对象空间和生成文件的高度优化 确定性内存收集 特定平台目标编译 强大的静态模板 灵活的指针与引用 强大的STL, MFC, ATL CLR 技术特点: 动态化的组件模型 丰富的元数据 自动垃圾收集 JIT编译,跨平台 运行时泛型 平安的对象句柄,数组,委托〔函数指针〕 强大的.NET 框架类库 Visual C++ 2005 C++/CLI集成技术图谱 使用C++ Interop,可以将ISO-C++代码单独编译为托管代码,也可以将ISO-C++与托管的C++/CLI代码放在同一个文件中编译,互相之间进展无缝的访问。 C++ Interop 技术保证了所有的ISO-C++代码经过cl/clr编译后行为保持不变。 绝大多数ISO-C++代码编译后将得到托管代码,即IL代码。局部不能编译为IL代码的采用P/Invoke调用实现,生成文件为一个包含非托管机器指令和IL指令的混合程序集。 C++ Interop会透明地处理其中的类型Marshal,是最为灵活和高效的互操作方案。 使用C++ Interop集成源代码 混合程序集 本地空间 CLR空间 代码 数据 本地机器码 CLR数据/类型 本地数据/类型 IL代码 混合程序集 源代码集成Code Example ISO-C++对象模型和CLI对象模型集成是C++/CLI集成技术中最为复杂,也最彰显潜力的地方。 C++/CLI在对象模型集成过程中几个突出的问题 C++/CLI只支持对托管引用类型进展垃圾收集效劳,不支持对ISO-C++本地类型的垃圾收集效劳。 垃圾收集导致了托管对象地址的不稳定,与ISO-C++本地对象稳定的地址形成鲜明比照。 C++/CLI中的托管对象的内存布局也和本地对象的内存布局有明显的不同。 C++/CLI中类型的多态机制〔虚拟〕也不同于本地类型的多态机制。 集成ISO-C++与CLI对象模型 对象模型构造的集成〔1〕 在托管对象中包含本地对象的指针 ref class ManagedClass{ string* pText; }; 在本地对象中包含托管对象的指针 class NativeClass { gcrootString^ pText; }; 在托管对象中包含本地对象的指针,或者在本地对象中包含托管对象的指针,从而可“连通〞托管世界和本地世界,实现两个代码库的相互复用。 在这个集成过程中,CLR垃圾收集只负责托管对象的收集工作,本地对象的回收工作仍由程序员自己负责delete。 对象模型构造的集成〔2〕 ? 在本地对象中包含托管对象 class NativeClass{ String text; }; ? 在托管对象中包含本地对象 ref class ManagedClass{ string text; }; 在托管对象中包含本地对象,或者在本地对象中包含托管对象,相对于“包含指针〞有相当技术难度,但成效与“包含指针〞相差不大。 这两种集成技术在Visual C++ 2005中都尚未实现,但在Visual C++的未来版本中有望通过代理来实现。 对象模型构造的集成〔3〕 ? 将本地对象放在托管堆中 string^ hText= gcnew string; ? 将托管对象放在本地堆中 String* pText = new String; 将本地对象放在托管堆中,或者将托管对象放在本地堆中,从而实现C++之父Bjarne Stroustrup所推崇的“可选的〞垃圾收集,意义重大,但实现难度相当大。 这两种集成技术在Visual C++ 2005中都尚未实现,在Visual C++开发组中仍处于
您可能关注的文档
最近下载
- 临床试验病理科专业标准操作规程SOP-2025年版.docx
- 标准图集-15J403-1 楼梯 栏杆 栏板(一).pdf VIP
- 项目汇报模板.pptx VIP
- 安徽省宿州市萧县2024~2025学年七年级上学期期末考试数学试卷 (原卷版)-A4.docx VIP
- 2025年版与2020版《普通高中化学课程标准》对比分析.doc
- 弹药学教学课件PPT破甲弹.ppt VIP
- JTGF30-2003 公路水泥混凝土路面施工技术规范.docx VIP
- 艺术生走向三-高三艺术生主题班会.ppt VIP
- 24春国家开放大学《儿童心理学》期末大作业参考答案.docx VIP
- 公路装配式梁桥下部柱式墩计算表格Excel.xls VIP
原创力文档


文档评论(0)