精通.NET互操作:P/Invoke,C++ Interop和COM Interop
基本信息
编辑推荐
使用P/Invoke调用C库函数及Windows API .
使用C++ Interop与C++类库及核心算法库进行交互..
使用COM Interop实现托管代码与COM之间的交互
国内首本全面深入介绍.NET互操作技术的参考手册
系统地介绍针对各种.NET互操作问题的解决方案
帮助读者掌握.NET互操作过程中的最佳实践...
内容简介回到顶部↑
本书介绍windows平台上的托管代码与非托管代码之间进行互操作的各种技术,包括由.net提供的各种互操作方法、属性以及各种工具的用法及其工作原理。本书包括3部分,平台调用——主要用于解决在托管代码中调用非托管程序设计语言编写的flat api(如win32 api、c/c++风格的api等)的问题;c++ interop——技术专门用于解决托管代码与c++编写的非托管代码之间的互操作问题;com interop——介绍了使用com interop解决在托管代码中调用com组件,以及在com中调用托管类型的问题。.
本书适合所有在开发过程中需要涉及到托管代码与非托管代码进行交互操作的.net开发人员阅读使用。不论是开始学习.net编程的开发人员,还是刚刚接触互操作的资深.net开发人员,都能从本书中获益。...
本书适合所有在开发过程中需要涉及到托管代码与非托管代码进行交互操作的.net开发人员阅读使用。不论是开始学习.net编程的开发人员,还是刚刚接触互操作的资深.net开发人员,都能从本书中获益。...
作译者回到顶部↑
目录回到顶部↑
第一部分 p/invoke .
第1章 使用c/c++类型的非托管函数 1
1.1 平台调用简介 2
1.2 hello world!示例程序 3
1.3 获得要调用的非托管函数声明 5
1.4 平台调用基础知识 8
1.5 指定调用约定 11
1.6 指定入口点 13
1.7 指定字符集 16
1.8 处理平台调用中的异常或错误 23
1.8.1 非托管函数的托管定义导致的异常或错误 24
1.8.2 非托管函数导致的异常或错误 30
1.9 释放非托管内存 37
1.9.1 释放由malloc方法分配的非托管内存 38
1.9.2 释放由new运算符分配的非托管内存 44
1.10 动态平台调用 47
1.10.1 平台调用的原理和过程 47
1.10.2 通过手动加载非托管dll实现动态平台调用 49
1.10.3 利用反射实现动态平台调用 51
1.10.4 利用getdelegateforfunctionpointer实现动态平台调用 54
第1章 使用c/c++类型的非托管函数 1
1.1 平台调用简介 2
1.2 hello world!示例程序 3
1.3 获得要调用的非托管函数声明 5
1.4 平台调用基础知识 8
1.5 指定调用约定 11
1.6 指定入口点 13
1.7 指定字符集 16
1.8 处理平台调用中的异常或错误 23
1.8.1 非托管函数的托管定义导致的异常或错误 24
1.8.2 非托管函数导致的异常或错误 30
1.9 释放非托管内存 37
1.9.1 释放由malloc方法分配的非托管内存 38
1.9.2 释放由new运算符分配的非托管内存 44
1.10 动态平台调用 47
1.10.1 平台调用的原理和过程 47
1.10.2 通过手动加载非托管dll实现动态平台调用 49
1.10.3 利用反射实现动态平台调用 51
1.10.4 利用getdelegateforfunctionpointer实现动态平台调用 54
前言回到顶部↑
简介
自从2000年微软.NET平台问世以来,全球已经有超过四百万开发人员使用.NET平台进行软件开发。对于.NET来说,这无疑是一个巨大的成功。这不仅仅体现在商业上的成功,其核心价值在于.NET为基于微软Windows平台的软件开发过程提供了一种新颖、高效的编程模型。在该模型下,开发人员能够更容易地将精力集中在其特定的开发情景中,而不用过多地关注消息循环、窗口过程等操作系统底层的处理。目前,基于.NET平台的技术和开发环境正处于飞速发展的时期。在本书即将出版之际,微软已经正式发布了.NET Framework 4.0所支持的新特性以及预览版。
另一方面,由于历史的原因,在.NET出现之前,开发人员已经编写了大量经过严格测试且可复用的非托管代码。它们以C库函数、C++类库以及COM组件的形式存在于诸多应用程序和框架之中,并承担着非常重要的角色。但由于在托管和非托管对象模型之间,数据类型、方法签名和错误处理机制都存在很大差异,从而使两种编程模型之间的代码互用和移植更加复杂。因此,在很长一段时期内,开发人员必须面对.NET与久经考验的“遗留代码(legacy code)”长期并存的局面。当然,开发人员可以选择.NET平台,使用托管代码重写这些已有的非托管代码。但这个重写的过程势必会枯燥无味,而且项目经理也不会在项目进度中安排大量的时间以进行重写代码的工作。更让开发人员感到尴尬的是,很多时候,即使花了很大代价对非托管代码进行了重写,但还是不能保证重写后的托管代码像那些久经考验的非托管代码一样正常或高效地工作。因此在很多情况下,重用已有非托管代码就成了最经济、可行的解决方案。以下是这些情况中的一些典型案例。
· 开发人员所在的部门一直使用第三方提供的COM组件为产品的核心功能提供支持。而新业务要求使用.NET平台。这就出现了一个问题。一方面公司已经为这些COM组件投入了大量的资金,不会轻易放弃这些组件。另一方面开发部门使用.NET平台进行开发,无法直接使用这些COM组件。因此,有效地在.NET平台中重用这些COM组件就成为产品成功的关键要素。
· 虽然.NET平台为开发人员提供了强大的框架类库(Framework Class Library,简称FCL),但它并没有包含基于Windows开发过程所涉及到的全部Windows API。因此如果开发人员希望使用那些.NET平台尚未支持的编程接口,则需要找到在.NET中调用Win32 API的方法。
· 在产品中可能会存在一些核心算法模块,它们对产品的质量有很大的影响。因此测试人员对这类模块的要求有时会十分严苛。开发人员不但要保证模块能够在规定时间内完成计算任务,还要保证它在规定的内存空间内得以实现。在这种情况下,使用C++等非托管语言编写的模块与使用.NET编写的程序集相比,在性能上会有较大的提升空间。
可见在不同的开发情境中,开发人员会主动或被动地在开发过程中引入托管代码与非托管代码共存的情况。幸运地是,公共语言运行库(Common Language Runtime,简称CLR)提供了一系列能够使托管代码与非托管代码进行交互操作的解决方案。其中主要包含3类互操作技术,如图1所示。
· 平台调用技术(P/Invoke):主要用于处理在托管代码中调用C库函数及Win32 API函数等非托管函数的情形。
· C++ Interop:适用于在托管代码与C++类库、核心算法库之间进行高效、灵活的互操作过程。一方面托管代码可以通过包装类机制使用C++类库,另一方面非托管代码可以通过包装模板机制使用托管对象。
· COM Interop:该技术用于处理托管代码与COM之间的交互过程。托管代码通过运行库可调用包装(RCW)使用非托管COM组件。反过来,非托管COM客户端可以通过COM可调用包装(CCW)使用托管程序集。
图1 .NET提供的3类主要互操作技术
由于不同的非托管对象,其设计和运行机制等存在很多差异。因此,托管代码与这些非托管对象进行交互操作时,在数据类型处理、错误处理机制、创建和销毁对象的规则以及互操作方法上,都需要根据不同的情况,分别进行不同的处理,从而导致互操作技术复杂多变且不易掌握。本书凝聚了作者多年使用互操作技术的经验,以严禁的态度和独特的内容组织结构与行文思路,系统且全面地介绍了在面对上述3种典型的开发情境时,如何在数据封送、性能优化和代码调试等环节均采用最佳实践。本书不但能够帮助读者快速找到解决问题的方法,还能帮助读者深入理解互操作技术的工作原理,并从更高的角度领悟互操作技术的本质和精髓。
本书的内容及组织结构
自从2000年微软.NET平台问世以来,全球已经有超过四百万开发人员使用.NET平台进行软件开发。对于.NET来说,这无疑是一个巨大的成功。这不仅仅体现在商业上的成功,其核心价值在于.NET为基于微软Windows平台的软件开发过程提供了一种新颖、高效的编程模型。在该模型下,开发人员能够更容易地将精力集中在其特定的开发情景中,而不用过多地关注消息循环、窗口过程等操作系统底层的处理。目前,基于.NET平台的技术和开发环境正处于飞速发展的时期。在本书即将出版之际,微软已经正式发布了.NET Framework 4.0所支持的新特性以及预览版。
另一方面,由于历史的原因,在.NET出现之前,开发人员已经编写了大量经过严格测试且可复用的非托管代码。它们以C库函数、C++类库以及COM组件的形式存在于诸多应用程序和框架之中,并承担着非常重要的角色。但由于在托管和非托管对象模型之间,数据类型、方法签名和错误处理机制都存在很大差异,从而使两种编程模型之间的代码互用和移植更加复杂。因此,在很长一段时期内,开发人员必须面对.NET与久经考验的“遗留代码(legacy code)”长期并存的局面。当然,开发人员可以选择.NET平台,使用托管代码重写这些已有的非托管代码。但这个重写的过程势必会枯燥无味,而且项目经理也不会在项目进度中安排大量的时间以进行重写代码的工作。更让开发人员感到尴尬的是,很多时候,即使花了很大代价对非托管代码进行了重写,但还是不能保证重写后的托管代码像那些久经考验的非托管代码一样正常或高效地工作。因此在很多情况下,重用已有非托管代码就成了最经济、可行的解决方案。以下是这些情况中的一些典型案例。
· 开发人员所在的部门一直使用第三方提供的COM组件为产品的核心功能提供支持。而新业务要求使用.NET平台。这就出现了一个问题。一方面公司已经为这些COM组件投入了大量的资金,不会轻易放弃这些组件。另一方面开发部门使用.NET平台进行开发,无法直接使用这些COM组件。因此,有效地在.NET平台中重用这些COM组件就成为产品成功的关键要素。
· 虽然.NET平台为开发人员提供了强大的框架类库(Framework Class Library,简称FCL),但它并没有包含基于Windows开发过程所涉及到的全部Windows API。因此如果开发人员希望使用那些.NET平台尚未支持的编程接口,则需要找到在.NET中调用Win32 API的方法。
· 在产品中可能会存在一些核心算法模块,它们对产品的质量有很大的影响。因此测试人员对这类模块的要求有时会十分严苛。开发人员不但要保证模块能够在规定时间内完成计算任务,还要保证它在规定的内存空间内得以实现。在这种情况下,使用C++等非托管语言编写的模块与使用.NET编写的程序集相比,在性能上会有较大的提升空间。
可见在不同的开发情境中,开发人员会主动或被动地在开发过程中引入托管代码与非托管代码共存的情况。幸运地是,公共语言运行库(Common Language Runtime,简称CLR)提供了一系列能够使托管代码与非托管代码进行交互操作的解决方案。其中主要包含3类互操作技术,如图1所示。
· 平台调用技术(P/Invoke):主要用于处理在托管代码中调用C库函数及Win32 API函数等非托管函数的情形。
· C++ Interop:适用于在托管代码与C++类库、核心算法库之间进行高效、灵活的互操作过程。一方面托管代码可以通过包装类机制使用C++类库,另一方面非托管代码可以通过包装模板机制使用托管对象。
· COM Interop:该技术用于处理托管代码与COM之间的交互过程。托管代码通过运行库可调用包装(RCW)使用非托管COM组件。反过来,非托管COM客户端可以通过COM可调用包装(CCW)使用托管程序集。
图1 .NET提供的3类主要互操作技术
由于不同的非托管对象,其设计和运行机制等存在很多差异。因此,托管代码与这些非托管对象进行交互操作时,在数据类型处理、错误处理机制、创建和销毁对象的规则以及互操作方法上,都需要根据不同的情况,分别进行不同的处理,从而导致互操作技术复杂多变且不易掌握。本书凝聚了作者多年使用互操作技术的经验,以严禁的态度和独特的内容组织结构与行文思路,系统且全面地介绍了在面对上述3种典型的开发情境时,如何在数据封送、性能优化和代码调试等环节均采用最佳实践。本书不但能够帮助读者快速找到解决问题的方法,还能帮助读者深入理解互操作技术的工作原理,并从更高的角度领悟互操作技术的本质和精髓。
本书的内容及组织结构
媒体评论回到顶部↑
托管代码与非托管代码之间的交互是许多程序员在.NET开发平台上不得不面对的任务。《精通.NET互操作性:PInvoke, C++ Interop和COM Interop》这本书深入而透彻地解析了.NET支持的三种与原生代码互操作的技术,作者以自己的经验讲述了原生代码与托管代码之间互操作所涉及到的编程要点,以及背后的一些实现原理。书中提供的实例有助于程序员快速领会并掌握.NET与原生代码互操作技术的用法。我建议在.NET平台上工作的程序员读一读这本书。
——潘爱民(著名技术作家,著写了《COM原理与应用》等多部畅销书,并翻译了多部经典名作,如《深入解析Windows操作系统》(第四版)、《C++ Primer中文版》(第三版)、《COM本质论》、《计算机网络》(第四版)等。他现在微软亚洲研究院从事系统与安全方向的研究工作)
与非托管代码进行互操作是.NET编程领域里面一个比较难的问题,因为它要求程序员对托管和非托管两个世界都有精深的了解。然而,互操作技术也是.NET框架最根本的基石之一,包括文件操作,网络通讯,GUI界面等大量的.NET类库都由平台调用而实现。事实上,掌握了与非托管代码互操作的技术之后,.NET程序员能够编写的程序类型可以在一夜之间倍增很多,而不只是仅限于ASP.NET或WinForm程序的编写了。
在我做.NET培训的时候,很多听众或者学员都对P/Invoke和COM Interop技术表现出了很大的兴趣,却又苦于没有C/C++的开发背景,在编写与非托管代码进行互操作的代码时可谓举步维艰。其实当年我在自己摸索其中的规律时,也耗费了大量的时间和精力。在各种.NET技术社区,关于非托管代码互操作的问题不绝于耳。该书的及时出现为以后的学习者铺平了道路。
这本书上的很多内容不是MSDN或者网上可以找到的,互操作代码的编写永远都是个复杂的任务。程序员只有掌握了其中的规律,了解了托管和非托管两个世界中程序的运行原理,才可能编写出高质量的互操作代码。本书能够极大地帮助程序员掌握这门技术。
——夏桅(2005年微软最有价值专家(MVP),CSDN技术论坛.NET版大版主(网名Sunmast(速马))。《.NET企业服务框架——应用.NET企业服务开发分布式业务解决方案》的译者之一)
.NET平台是个托管的世界,提供了与以往完全不同的编程模型。毋庸置疑,.NET是当前及未来Windows平台下开发技术的主流。但转到.NET平台并非意味着使用.NET将现有的C/C++/COM代码进行重写。.NET提供的丰富互操作技术使开发人员能够通过这些技术将.NET代码与非托管代码进行集成,以重用现有非托管代码。可惜的是,市场上大部分.NET书籍对互操作技术少有涉足,中文资源尤其缺乏。本书深入且详尽地介绍了如何在托管代码与非托管代码之间进行互操作,涉及到了互操作技术的各个方面,是本非常有价值的参考书,高度推荐!
——金雪根(2002~2005年微软最有价值专家(MVP),CSDN技术论坛.NET版大版主(网名Saucer(思归))。《.NET企业服务框架——应用.NET企业服务开发分布式业务解决方案》的译者之一)
从2000年.NET平台问世以来,.NET Framework已经从当初的1.0发展到目前的4.0。.NET为软件开发过程提供了一种新颖、高效的编程模型,因此广受软件企业及程序员们的青睐。但很多时候,程序员还需要在.NET中重用已有的、经过严格测试的非托管代码。虽然.NET平台提供了重用非托管代码的互操作技术,但是由于托管与非托管编程模型之间存在的巨大差异,因此掌握这些互操作技术并非易事。我曾经就为托管代码与非托管代码的交互操作问题而挠首不已,如果那时就有这么一本具有针对性的专业书籍,我就能省去很多的摸索时间和寻觅解决方案的痛苦过程。本书对.NET平台提供的各种互操作技术的方法和原理进行了深入且全面的介绍,并通过实际问题介绍了各种情况下的最佳实践。据我所知,本书是国内第一本专门介绍.NET互操作性的书。对于.NET开发人员来说,本书无疑是一本难得的好书,非常值得一读。
——陈缘(2005-2008年微软最有价值专家(MVP),CSDN技术论坛VB版版主(网名supergreenbean(超级绿豆)),《.NET 2.0应用程序调试》译者)
在微软的技术格局中,风头正劲的现代软件开发平台.NET所代表的托管代码世界,与已经早已取得实质性市场认同的非托管软件开发世界(比如C++、COM等)相比,编程模型完全不同。以微软尽量保持向下兼容的一贯设计风格,.NET的设计中自然引入了各种互操作技术,以使这两个世界的往复沟通成为可能。然而多年的实践告诉我,这一领域就像是朵月中花——看上去很美,可真要“得道”却并非易事。.NET提供的互操作技术远比想象中要复杂和晦涩的多,这本国内外少有的专门全方面讲解.NET互操作技术的著作的出现实属难能可贵、雪中送炭。本书的两位作者把在该领域内多年摸索与实践的宝贵经验系统化地汇集在本书中,相信一定能够帮助读者深入理解和掌握.NET互操作技术。
——金戈(2004-2008年微软最有价值专家(MVP),《代码大全(第2版)》首席译者)
——潘爱民(著名技术作家,著写了《COM原理与应用》等多部畅销书,并翻译了多部经典名作,如《深入解析Windows操作系统》(第四版)、《C++ Primer中文版》(第三版)、《COM本质论》、《计算机网络》(第四版)等。他现在微软亚洲研究院从事系统与安全方向的研究工作)
与非托管代码进行互操作是.NET编程领域里面一个比较难的问题,因为它要求程序员对托管和非托管两个世界都有精深的了解。然而,互操作技术也是.NET框架最根本的基石之一,包括文件操作,网络通讯,GUI界面等大量的.NET类库都由平台调用而实现。事实上,掌握了与非托管代码互操作的技术之后,.NET程序员能够编写的程序类型可以在一夜之间倍增很多,而不只是仅限于ASP.NET或WinForm程序的编写了。
在我做.NET培训的时候,很多听众或者学员都对P/Invoke和COM Interop技术表现出了很大的兴趣,却又苦于没有C/C++的开发背景,在编写与非托管代码进行互操作的代码时可谓举步维艰。其实当年我在自己摸索其中的规律时,也耗费了大量的时间和精力。在各种.NET技术社区,关于非托管代码互操作的问题不绝于耳。该书的及时出现为以后的学习者铺平了道路。
这本书上的很多内容不是MSDN或者网上可以找到的,互操作代码的编写永远都是个复杂的任务。程序员只有掌握了其中的规律,了解了托管和非托管两个世界中程序的运行原理,才可能编写出高质量的互操作代码。本书能够极大地帮助程序员掌握这门技术。
——夏桅(2005年微软最有价值专家(MVP),CSDN技术论坛.NET版大版主(网名Sunmast(速马))。《.NET企业服务框架——应用.NET企业服务开发分布式业务解决方案》的译者之一)
.NET平台是个托管的世界,提供了与以往完全不同的编程模型。毋庸置疑,.NET是当前及未来Windows平台下开发技术的主流。但转到.NET平台并非意味着使用.NET将现有的C/C++/COM代码进行重写。.NET提供的丰富互操作技术使开发人员能够通过这些技术将.NET代码与非托管代码进行集成,以重用现有非托管代码。可惜的是,市场上大部分.NET书籍对互操作技术少有涉足,中文资源尤其缺乏。本书深入且详尽地介绍了如何在托管代码与非托管代码之间进行互操作,涉及到了互操作技术的各个方面,是本非常有价值的参考书,高度推荐!
——金雪根(2002~2005年微软最有价值专家(MVP),CSDN技术论坛.NET版大版主(网名Saucer(思归))。《.NET企业服务框架——应用.NET企业服务开发分布式业务解决方案》的译者之一)
从2000年.NET平台问世以来,.NET Framework已经从当初的1.0发展到目前的4.0。.NET为软件开发过程提供了一种新颖、高效的编程模型,因此广受软件企业及程序员们的青睐。但很多时候,程序员还需要在.NET中重用已有的、经过严格测试的非托管代码。虽然.NET平台提供了重用非托管代码的互操作技术,但是由于托管与非托管编程模型之间存在的巨大差异,因此掌握这些互操作技术并非易事。我曾经就为托管代码与非托管代码的交互操作问题而挠首不已,如果那时就有这么一本具有针对性的专业书籍,我就能省去很多的摸索时间和寻觅解决方案的痛苦过程。本书对.NET平台提供的各种互操作技术的方法和原理进行了深入且全面的介绍,并通过实际问题介绍了各种情况下的最佳实践。据我所知,本书是国内第一本专门介绍.NET互操作性的书。对于.NET开发人员来说,本书无疑是一本难得的好书,非常值得一读。
——陈缘(2005-2008年微软最有价值专家(MVP),CSDN技术论坛VB版版主(网名supergreenbean(超级绿豆)),《.NET 2.0应用程序调试》译者)
在微软的技术格局中,风头正劲的现代软件开发平台.NET所代表的托管代码世界,与已经早已取得实质性市场认同的非托管软件开发世界(比如C++、COM等)相比,编程模型完全不同。以微软尽量保持向下兼容的一贯设计风格,.NET的设计中自然引入了各种互操作技术,以使这两个世界的往复沟通成为可能。然而多年的实践告诉我,这一领域就像是朵月中花——看上去很美,可真要“得道”却并非易事。.NET提供的互操作技术远比想象中要复杂和晦涩的多,这本国内外少有的专门全方面讲解.NET互操作技术的著作的出现实属难能可贵、雪中送炭。本书的两位作者把在该领域内多年摸索与实践的宝贵经验系统化地汇集在本书中,相信一定能够帮助读者深入理解和掌握.NET互操作技术。
——金戈(2004-2008年微软最有价值专家(MVP),《代码大全(第2版)》首席译者)
相关资源回到顶部↑
· 【推荐】众多高校学子口口相传,他们共同的选择--华清远见嵌入式学院(嵌入式Linux就业课程、3G手机开发就业课程,通过入学测试即签100%就业协议,4个月集中实训,世界500强企业成功就业保障!!!)· 【亚嵌教育 嵌入式培训专家】(嵌入式培训,嵌入式Linux培训,ARM培训,Linux培训,3G培训,Android培训,WINCE培训,DSP培训,FPGA培训,嵌入式就业培训)
· InfoQ中文站论坛:.NET讨论区(InfoQ .NET)
· 程序员的7种武器(正则表达式、编程语言、数据库、算法、软件调试、开发环境)
· WCF的开山之作 WCF画卷的清明上河图(WCF WF WPF)
评论交流
共有25人开贴评论 33人参与评论 15人参与打分 查看
评价等级:







发表于:2009-5-14 12:47:00
相见恨晚
前段时间在公司做一个OUTLOOK插件的.NET CRM程序,一直与非托管组件打交道,吃的苦头那叫一个多啊。不仅容易出错,而且经常被内存泄漏问题搞得头疼死了。拿到这本书后,真是欣喜若狂,里面讲的正是我之前一直困惑和想要知道的东西。用我同事的话说,正是挠到最痒的地方了。之前在做项目时,我也google了很多次,搜出来很多资料,但是都太有限,造成我对这个互操作技术还是一知半解。在读了这本书第1章的基础知识后,发现这书系统地对P/Invoke技术进行了介绍,而且都直接先举实际的代码例子来说明问题(这可对了我们程序员看书的胃口啊),所以很容易就看懂了很多之前不懂的地方,感觉书里描述问题的思路非常连贯。而且第1章最后部分对平台调用内存泄漏的问题分析和解释得非常好,给出了多种解决方案并对各个方案的优劣性进行了比较分析。可惜之前做项目的时候这书还没有出版,不然我们就可以少吃很多苦头了。推荐!
前段时间在公司做一个OUTLOOK插件的.NET CRM程序,一直与非托管组件打交道,吃的苦头那叫一个多啊。不仅容易出错,而且经常被内存泄漏问题搞得头疼死了。拿到这本书后,真是欣喜若狂,里面讲的正是我之前一直困惑和想要知道的东西。用我同事的话说,正是挠到最痒的地方了。之前在做项目时,我也google了很多次,搜出来很多资料,但是都太有限,造成我对这个互操作技术还是一知半解。在读了这本书第1章的基础知识后,发现这书系统地对P/Invoke技术进行了介绍,而且都直接先举实际的代码例子来说明问题(这可对了我们程序员看书的胃口啊),所以很容易就看懂了很多之前不懂的地方,感觉书里描述问题的思路非常连贯。而且第1章最后部分对平台调用内存泄漏的问题分析和解释得非常好,给出了多种解决方案并对各个方案的优劣性进行了比较分析。可惜之前做项目的时候这书还没有出版,不然我们就可以少吃很多苦头了。推荐!
评价等级:







发表于:2009-5-13 17:18:00
昨天下午订的书,今天上午就拿到货了,China-pub服务越来越不错了。说说这本书,其实很多年前我就遇到了这样的困惑,那就是一直找不到一本专业的记述如何把非托管的c/c 代码打包成一个托管的.Net下的dll,前段时间看同事买了这本书,读了读,觉得不错,值得收藏。我觉得这本书很适合于那些试图快速地需要在.NET平台上借助原有非托管代码功能的项目。同时,也适合于那些将来想去微软实习的同学,因为很多年前在那里实习过一段时间,我觉得这是微软实习生必须掌握的基本技能;另外,也适合于想去微软求职的同仁们,因为,微软内部开发经常需要在托管和非托管平台上互操作。
| 我要写评论 |
| 查看所有评论交流(共25条) |


点击看大图






加载中...