从unix到windows nt移植c++new

从unix到windows nt移植c++new

ID:22341657

大小:27.19 KB

页数:7页

时间:2018-10-28

从unix到windows nt移植c++new_第1页
从unix到windows nt移植c++new_第2页
从unix到windows nt移植c++new_第3页
从unix到windows nt移植c++new_第4页
从unix到windows nt移植c++new_第5页
资源描述:

《从unix到windows nt移植c++new》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、从UNIX到WINDOWSNT移植C++WIN32是WINDOWSNT平台上应用程序的主要编程接口(API),它支持安全性、国际化以及32位内存模式,本文着重讨论利用WIN32API将C++程序从UNIX平台移植到WINDOWSNT平台上的一些要点和步骤。WINDOWSNT是一个完全的32位系统,它具有所有的标准UNIX特性,例如网络通信、图形用户界面等等。这两个系统有许多相同或类似的基本概念,但也存在着很明显的不同点。NT与UNIX之间跨平台移植的一些要点一个UNIX应用程序移植到NT平台上可能简单到只须重新编译并运行,也可能复杂到需要整个应用程序的重新设计编码,工作量的大小取决于应用程

2、序本身的平台相关性即可移植特性。同时,移植的效果也取决于该应用是否用到底层操作系统服务或调用。如果该应用只使用基本的C运行库,移植是很简单的,否则就会或多或少涉及到重新编码及环境重新设置问题。按照模块化和可移植编码机制设计出来的应用是易于移植的,因为整个程序被划分为逻辑块,硬件与操作系统相关部分将被隔离,这就大大方便了跨平台移植工作。1.关于预编译处理可以通过#ifdef预编译指令来区别编译平台相关的程序码,见下例:#ifdefunixintdfile; /*filedescriptor*/#endif#ifdef-MSC-VERHANDLEdfile; /*filehandle*/#en

3、dif2.关于C运行库在大多数情况下,UNIX和NT平台的C库函数实现没有或只有很细微的差别,用户可以不必深究,但有一些区别是应当重视的。NT平台下,有部分库函数带有前导下划线。例如UNIX平台下的函数strdup()在移植到N时应取代以-strdup()。当为读写打开一个二进制文件时,在NT平台下必须指明文件类型,从而在UNIX环境中的下列调用:fd=fopen(filename,"w");必须改为:fd=fopen(filename,"wb");3.关于创建应用UNIX环境下有各种版本的make实用程序来完成Build的功能。WINDOWSNTSK有一个命令行方式的nmakeutili

4、ty,UNIX和NT环境下的makefile文件不尽相同,在移植过程中,部分命令语法、编译选项及路径名必须做相应改动。以下列出一些最常见的对makefile文件的变动:·定义资源目录路径名的宏;·定义头文件及包含文件路径名的宏;·相应命令参数所作的一些改动;·对文件名后缀的改动以匹配NT特性。4.关于文件系统UNIX和NT都支持几种格式的文件系统,对其提供了一致的存取机制。两个系统都把文件视为顺序字符序列,并可以定位在该序列的任意位置。两个系统均提供了目录树式的层次式文件定位方式,但也有一些区别:·WINDOWSNT中使用逻辑盘符的概念,而UNIX下只有一个根目录root(/)。·文件命令

5、方式有所不同,WINDOWSNT对文件名中的特殊字符有更为严格的规定,以下字符不允许出现在文件名中:/,,<,>,",:,

6、,以及ASII字符0到32·WINDOWSNT的文件操作中文件名大小写不敏感,而UNIX下则是大小写敏感的。·WINDOWSNT使用反斜杠,而UNIX使用正斜杠作为路径分隔符(这个问题下文还要讨论。·WINDOWSNT的NTFS文件格式提供了文件存取控制表(ACL),这是对UNIX文件系统权限的能力扩充。5.关于句柄WINDOWSNT使用句柄(handle)来代替UNIX中的文件描述符,但在NT中句柄不局限于文件标识。WIN32用句柄来存取、操纵几乎所有类型的对象,

7、包括打开文件、进程、线程、信号量、事件、管道、通信设备等等。句柄可通过下列途径获得:·显示创建一个对象·打开一个已命名对象·从父进程继承得到·复制一个句柄用于另一个进程6.关于网络UNIX网络一般指TCP/IP协议及各种工具,以及socket接口,WINDOWSNT支持TCP/IP及许多通用应用。WINDOWSNT自身的WindowsSocket接口基于BerkeleyUNIX(BSD4.3)Sockets。它支持UNIX应用,且允许NT系统加入广域Internet网。使用WindowsSockets与使用BerkeleySockets没什么不同,流方式和数据包方式都被支持,遵循创建Soc

8、ket、绑定地址、监听或初始化连接、发送或接收数据、关闭连接一个一般过程。但在NT环境下必须使用WSAStartup(),WSAcleanup()来初始化WindosSocketDLL以及断开连接。API函数socket()返回一个sockethandle,而不是一个整数,因为WindowsSockets使用句柄而不是文件描述符,故不能使用read()或write(),但可以使用eadfile()和Writefile()

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。