windows.h在linux中用什么替,Windows下程序向Linux下移植细节 - wenhm的专栏 - CSDNBlog

3.2.程序的移植

进行程序移植的过程中碰到的问题较多,但大都主要集中在文件名大小写、路径分隔符、数据类型等方面。

3.2.1Linux和Windows操作系统API差异

Windows下基于MFC的API、基于消息的API、基于注册表的API等在Linux下都是没有的,由于文件系统的差异,和文件系统相关的API也是不可以移植的。

解决方法:程序中不使用上面所列的不可移植的操作系统API,通过使用开源库如PWLIB或ACE中的可移植的类来实现所需的功能。

如:

SYSTEMTIME pTime;

GetLocalTime(&pTime);//为windows独有的API

sprintf(sTemp,"[%02.2d-%02.2d-%02.2d]%02.2d:%02.2d:%02.2d %s(%d)",

pTime.wYear,pTime.wMonth,pTime.wDay,

pTime.wHour,pTime.wMinute,pTime.wSecond,file,lineNum);

改为:

使用pwlib的PTime来实现

PTime curTime;//pwlib中可以跨平台使用的时间类

sprintf(sTemp,"[%02.2d-%02.2d-%02.2d]%02.2d:%02.2d:%02.2d %s(%d)",

curTime.GetYear(), curTime.GetMonth(), curTime.GetDay(),

curTime.GetHour(), curTime.GetMinute(), curTime.GetSecond(), file, lineNum);

3.2.2开发库函数的差异

一些函数在Windows操作系统的VC开发库中有,但Linux下的GLIB C开发库中没有或是名字不一样。

Windows下有而Linux下开发库没有的函数,例如:itoa(int,char*, int)、ltoa(long,char*, int)、ultoa(unsignedlong,char*, int)等。

解决方法1:通过编写相应的代码来实现该函数。

解决方法2:使用Linux下含有类似功能的函数来替换,如itoa()、ltoa()等系列的函数都可以通过sprintf()或snprintf()函数来替换。

替换例子1:

ltoa( confHistb.conflong, ca

你可能感兴趣的:(windows.h在linux中用什么替,Windows下程序向Linux下移植细节 - wenhm的专栏 - CSDNBlog)