RSS 2.0 Feed
2007-04 Entries
摘要:MSDN第9频道又采访了Visual C++类库组的项目经理Nikola Dudar和Sarita Bafna,以及质量控制组的Marina Polishchuk。尽管Visual C++项目组已经转移了工作重点,但是很少人注意到这一点。或许这些采访可以帮助你了解Visual C++项目组的工作。 为什么C++仍旧重要? 非托管的应用程序有很大的代码积累,而这些程序的升级工作仍旧在进行 性能是选择C++的重要因素。举例来说,游戏和杀毒程序更适合用非托管代码来编写。 多平台支持。虽然.Net号称是跨平台的,但是如果要编写真正的跨平台程序,开发的时候遵循C++标准还是很有必要的。 为什么C++程序员仍旧重要? C++程序员理解整个机器的运作,他们知道怎么写垃圾收集机制,甚至可以写机器代码 C++程序员可以很容易的学会其他语言——C++已经是最难学的语言之一了 C++程序员并不只使用一种语言。如果有必要的话,他们会选择汇编、C#或者Perl这样更适合特定任务的语言。 为什么Visual C++项目组转移了工作重点? C++程序员对于转到C#没有抵触心理,所以Visual C++项目组不认为有必要尽快实现Visual C#支持的所有特性,比如LINQ和WPF设计器 C++程序员对于让他们的非托管程序调用其他语言的托管代码比用C++来写托管代码更有兴趣 核心模块,例如IE和Windows外壳会更加频繁地更新,而会有更多的非托管代码需要调用这些新的特性,为了这些特性,有必要在MFC中引入新的封装类来节省C++程序员的时间 Orcas中Visual C++的新特性: 托管代码互操作库。可扩展的托管数据类型和非托管数据类型的转换支持 STL/CLR。使得托管代码可以利用旧的STL编写的算法 Vista支持。对Vista中新的通用控件和文件对话框等界面元素的MFC封装。 DevExpess重构引擎——将包含DevExpess的Refactor!? for C++。 Orcas之后的考虑 更新界面。有些Visual C++的代码是针对20年之前的硬件环境设计的,已经不适合现在的需要。新的Phoenix编译引擎使得重写前台变得更加容易。 太多现有的代码需要重构。新的Phoenix编译引擎使得代码分析变得更加容易。 C++标准。新的C++标准TR1可能会在Orcas下一版本开发时成为正式标准。 多核支持。需要编写可以充分利用多CPU的代码。第一个尝试是LINQ。 结论 MFC和非托管代码回来了 性能和多平台支持的重要性越来越低,托管代码仍旧具有很大的市场。 Visual C++项目组的其他动作 ATL Server发布到了源代码共享站点CodePlex。这包含CAtlRegExp,在.Net和第三方类库(boost,TR1)的竞争下已经不再有必要维护一个单独的条件表达式标准了...[阅读全文]

posted @ | Feedback (3) |

摘要:使用过DLL的人都知道,重用二进制的代码很容易造成DLL地狱,这也是为什么Windows引入系统文件保护的原因之一。在Visual C++2005中引入的程序集清单(Assembly Manifest)看起来似乎可以解决这个问题,但是很多人发现在把Visual Studio更新到SP1后创建的安装程序项目不再能创建可以正常运行的安装程序。他们得到的是一个错误消息:应用程序配置错误,请重新安装应用程序。 看起来这个问题的原因是Windows Vista SDK和Visual Studio 2005 SP1的安装都把Visual C++2005运行时刻库(CRT)的合并模块安装到C:\Program Files\Common Files\Merge Modules下。Windows Vista平台SDK中的是CRT 8.0.50727.42,而Visual Studio 2005 SP1包含的是CRT 8.0.50727.752。如果安装完Visual Studio 2005 SP1之后再安装/修复Windows Vista SDK,那么C:\Program Files\Common Files\Merge Modules下会是Windows Vista SDK的旧版本,这会使得安装程序项目编译出有问题的部署包,因为应用程序使用的是新版本的CRT。 解决这个问题的方法是在安装/修复Windows Vista SDK之后重新安装Visual Studio 2005 SP1——你可能需要6.2G的系统盘剩余空间来完成这个安装。另外,为了保险起见,安装之后应该备份C:\Program Files\Common Files\Merge Modules下面的文件,至少也要把它们设为只读文件。...[阅读全文]

posted @ | Feedback (4) | Filed Under [ 集成开发环境(IDE) 平台SDK(Platform SDK) C++/CLI/Managed C++ Extension ]