亲自动手 64位应用程序开发环境和工具简介(2) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
http://www.sina.com.cn 2006年02月15日 07:31 天极yesky | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Microsoft Windows Platform SDK提供了文档、示例程序、头文件、库和相应工具,可用作开发Windows下的应用程序,开发出的程序可运行在基于x86、x64和IA64(安腾)处理器的Windows Server 2003 SP1、Windows XP SP2、Windows XP x64 Pro Edition和Windows 2000之上;同时,Platform SDK微软提供免费下载。如果要开发64位 .NET程序,还必须安装 .NET Framework 2.0 Software Development Kit (SDK) (x86)。 图4 Platform SDK 同时,在每一个项目下,都有针对不同64位平台的工具和代码生成环境设置,如下图所示: 图5 针对不同64位平台 以笔者电脑安装的Microsoft Platform SDK for Windows Server 2003 SP1为例,在Windows开始菜单中,可见有Windows 2000、Windows Server 2003 32位和64位、Windows XP 32位和64位,这五项代码生成环境设置,每个项目下还有调试版(Debug)和零售版(Retail--对应于以前的发布版Release)等子项目。点击相应的菜单项,批处理文件会设置好合适的库和头文件目录,并打开一个命令提示符窗口,在此窗口中,可调用合适的编译器和链接器,同时,此Platform SDK中还带有一个调试器WinDbg,可用于调试程序。 图6 运行 下表显示了Platform SDK安装之后的文件目录结构
编译器简介 Platform SDK中的编译器是微软公司提供的跨平台交叉编译器,可运行在基于x86或x64处理器的Windows XP和Windows Server 2003之上,并支持WoW64仿真层,提供跨平台交叉编译功能: 图7 平台交叉编译
此编译器跟随Platform SDK一同发布,与Visual Studio中的Visual C++编译器有所不同,下面列出了五点差异,以便大家清楚地区分。 ·此PSDK C++编译器不能用于Visual Studio的集成开发环境之中,只能用于命令行编译。 ·此PSDK C++编译器不支持CLR代码生成。完全支持64位平台CLR代码生成的编译器是Visual Studio.NET 2005中的Visual C++编译器。 ·此PSDK C++编译器可运行在Win64或Win32系统的电脑上。 ·此PSDK C++编译器支持6.0版本的MFC/ATL、STL、CRT。如果想使用Visual Studio 2003中的MFC/ATL、STL、CRT,请联系libs7164@microsoft.com,以获取这些库。 ·此PSDK C++编译器带有一些不同的编译器选项(参见下文)。 因为此处编译器和链接器的大多数选项都与Visual Studio x86 32位版本上的相同,在此主要描述不同之处: 编译器选项
链接器选项
需注意的事项 ·iostream不支持__int64: 要避免如下形式的代码
·在基于AMD64和x64的编译器上,已不支持_asm。 下面,我们以一个经典的"Hello world"程序来演示如果在32位平台上,开发64位应用程序。 打开Microsoft Visual C++ 2005 Express Edition,在"文件(File)"菜单中,选取"新建(New)"à"工程(Project)",在打开的对话框左边窗体中,选择工程类型为"Win32"(我们此处不是真的要生成一个Win32类型的程序,而是利用这个自动化过程而已,最终程序为x64类型),输入工程名,点击"下一步(Next)" à在此不勾选"使用预编译头precompiled header"à"完成(Finish)",此时可看到已生成一个工程,修改代码如下:
|