科技时代新浪首页 > 科技时代 > 学园 > 正文

亲自动手 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)。

  在Platform SDK的安装过程中,可依据个人开发的需要选择所需安装的项目:

亲自动手64位应用程序开发环境和工具简介(2)
 
图4 Platform SDK

  同时,在每一个项目下,都有针对不同64位平台的工具和代码生成环境设置,如下图所示:

亲自动手64位应用程序开发环境和工具简介(2)
 
图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,可用于调试程序。

亲自动手64位应用程序开发环境和工具简介(2)
 
图6 运行

  下表显示了Platform SDK安装之后的文件目录结构

目录 内容
\Bin Platform SDK工具
\Bin\Win64 用于生成基于安腾(Itanium)架构应用程序的工具,包括一个x86-IA64的跨平台交叉编译器
\Bin\Win64\AMD64 用于生成基于x64架构应用程序的工具
\Bin\Win64\ia64 用于生成基于安腾(Itanium)架构应用程序的工具
\Bin\Win64\x86\AMD64 用于生成基于x64架构应用程序的工具,包括一个x86-AMD64的跨平台交叉编译器
\Help Platform SDK文档
\Include 头文件和IDL文件,包含ATL、CRT、MFC
\Lib 输入库和TLB文件
\Lib\ia64 支持基于安腾(Itanium)架构的输入库和TLB文件
\Lib\AMD64 支持AMD64架构的输入库和TLB文件
\License Platform SDK许可信息
\NoRedist\Win64 支持安腾(Itanium)架构的DLL和PDB文件,不可再发布
\NoRedist\Win64\AMD64 支持AMD64架构的DLL和PDB文件,不可再发布
\Redist\Win64 支持安腾(Itanium)架构的DLL文件
\Redist\Win64\AMD64 支持AMD64架构的DLL文件
\Samples Platform SDK开发示例
\Src 支持64位开发的ATL、CRT、 MFC源代码

  编译器简介

  Platform SDK中的编译器是微软公司提供的跨平台交叉编译器,可运行在基于x86或x64处理器的Windows XP和Windows Server 2003之上,并支持WoW64仿真层,提供跨平台交叉编译功能:

亲自动手64位应用程序开发环境和工具简介(2)
 
图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位版本上的相同,在此主要描述不同之处:

  编译器选项

选项 动作
/fp:fast 生成最快速度的浮点代码,不能与其他任何/fp:<option>一同使用。
/fp:precise 生成与IEEE兼容并优化过的浮点代码,不能同时使用/fp:fast或/fp:strict,但/fp:except除外。
/fp:strict 生成保守的浮点代码,隐含/fp:except。不能同时使用/fp:fast或/fp:precise,但/fp:except- 除外。
/fp:except[-] 打开或关闭可靠浮点例外。不能同时使用/fp:fast。
/homeparams 强制所有的参数写入堆栈,包括那些通过寄存器传递的参数。
/errorReport:<prompt|send|none> 此选项通过内部编译器错误(ICE)机制设置编译器的错误报告行为。prompt - 通过ICE,提示用户发送一个错误报告给微软。send - 通过ICE,一个错误报告直接发送给微软。none - 不发送错误报告给微软。
/RTC1 /RTCc /RTCs /RTCu Platform SDK不支持运行时检查。如果需要此项功能,请使用Visual Studio 2005中的编译器和库。

  链接器选项

选项 动作
loosefpmath.obj 使用此选项将会为浮点计算打开FTZ(flush-to-zero)和DAZ(denormals-as-zero)。默认情况下,是不使用此选项,并且FTZ(flush-to-zero)和DAZ(denormals-as-zero)是关闭的。

  需注意的事项

  ·iostream不支持__int64:

  要避免如下形式的代码

#include <iostream.h>
__int64 i64;
void main( )
{
cout << i64;
}

  ·在基于AMD64和x64的编译器上,已不支持_asm。

  下面,我们以一个经典的"Hello world"程序来演示如果在32位平台上,开发64位应用程序。

  打开Microsoft Visual C++ 2005 Express Edition,在"文件(File)"菜单中,选取"新建(New)"à"工程(Project)",在打开的对话框左边窗体中,选择工程类型为"Win32"(我们此处不是真的要生成一个Win32类型的程序,而是利用这个自动化过程而已,最终程序为x64类型),输入工程名,点击"下一步(Next)" à在此不勾选"使用预编译头precompiled header"à"完成(Finish)",此时可看到已生成一个工程,修改代码如下:

#include <iostream>
using namespace std;

int main(int argc, char * argv[])
{
cout << "Hello World!" << endl;
return 0;
}

[上一页] [1] [2] [3] [下一页]

发表评论

爱问(iAsk.com)



评论】【论坛】【收藏此页】【 】【多种方式看新闻】【下载点点通】【打印】【关闭




科技时代意见反馈留言板 电话:010-82628888-5595   欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

Copyright © 1996 - 2006 SINA Corporation, All Rights Reserved

新浪公司 版权所有