因为项目中有一个目标是要跨平台实现,因此也需要一个跨平台的log库功能;主要是用两个开源库进行了实验,一是wxLog,二是Log4Cpp.
最初实验了wxLog,使用很方便,也解决了在非GUI界面下独立使用的问题,但遇到致命问题是非线程安全,在多线程情况下直接导致wxLog析构失败。
接着又实验了强大的Log4Cpp库,在查看源代码时,看到其中有关于_WIN32_WINCE这样的定义语句,不免对在WINCE平台下编译这个库充满信心。Log4Cpp顺利完成了在windows平台下的编译,但在WM5+VS2005编译时,就遇到了一大堆的问题。首先是WM5的库不完全,通过使用STLPort解决了这个问题;然后是DEBUG与ERROR宏定义冲突,通过在log4Cpp的priority定义前加“L_”前缀,通过一种非标准的方式解决这个问题;最后遇到了posix库的问题,windows平台下可以支持posix库,但在Winows Mobile(WINCE)平台上并不支持,在Log4Cpp中,使用了dup()等posix函数,暂时无法找到合适解决方法,编译失败。希望日后有时间再行研究,找到HACK方法,使之可以在WINCE平台下编译通过。
log4Cpp是一个强大的日志库,通过网络搜索,未找到在WINCE平台下的编译说明,今以记之,以节约后来人的时间。