注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

多多的爹

 
 
 

日志

 
 

MFC到wxWidgets移植笔记(14)——消除代码中的平台差异  

2008-05-24 23:40:24|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

此系列的大纲是早就拟好的,写到这一篇还真有点犯难了。因为当初从Windows平台移到Linux平台下编译时,遇到了很多代码中的问题,可是没有记下来,现在再回想,有点无处下笔了。只能凑合着写个一两点:

1.gcc编译器好像只能处理ansi版本的代码文件。如果是unicode或者utf8,都会出现编译问题。并且,他不会根据你当前操作系统的默认语言识别代码文件中非ansi字符(比如中文)。所以,如果代码中,是绝对不能有中文的。这种问题有两个办法解决,一是参考我的前一篇笔记,将所有的中文字符移到非代码文件中,二是用Asicii编码来代替。比如:

wchar_t *t = L"中文";

就改成了:

byte t[] = {0x2d, 0x4e, 0x87, 0x65, 0, 0};
wprintf(L"%s\n", (wchar_t*)t);

2.所有的代码文件必须在文件结尾有一个空行。这是Linux编译器的要求,很怪异

3.Linux下面没有工程文件,所以某些配置需要在预定义头文件中用代码加上。比如如果编译带调试信息的,要加上:

#ifndef DEBUG
#define DEBUG
#endif

#ifdef _DEBUG
#undef _DEBUG
#endif
#define DEBUG 1

#ifndef __WXDEBUG__
#define  __WXDEBUG__
#endif

编译Unicode版本的,要加上:

#ifndef UNICODE
#define UNICODE
#endif

#ifndef _UNICODE
#define _UNICODE
#endif

#ifdef wxUSE_UNICODE
#undef  wxUSE_UNICDOE
#endif
#define wxUSE_UNICDOE 1

4.貌似gcc有预编译头文件一说,但我一直没有试出来。因此stdafx.h一定要在每个cpp中包含,并将所有不变的信息都放入此文件中。

5.成员函数指针,必须带上类名修饰

6.Linux对文件名是大小写敏感的,所以通常会将所有的代码文件名改成小写,在include时使用小写文件名

暂时就记得这些了,以后再补充

  评论这张
 
阅读(6)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017