miniLZO项目在winCE下的使用

miniLZO项目在winCE下的使用

miniLZO是一个小型的开源项目,完全基于标准C,对我们使用者来说,它构成仅需要4个文件,可以到网站:http://www.oberhumer.com/opensource/lzo/ 看到它的详细介绍。

       该项目的作者声称,目前支持的OS,成功创建并测试过的有DOS, Windows 3.x (16-bit), Windows 95/98/ME/NT/2000/XP/2003, Linux, HPUX and a DEC Alpha (64-bit);报告已经工作的系统有:AIX, AmigaOS, ConvexOS, CrayOS, Dreamcast, FreeBSD, IRIX, Mac Classic, MacOSX, MiNT, NetBSD, Nintendo64, OpenBSD, OS/400, PalmOS (Pilot), PlayStation, QNX, Solaris, SunOS, TOS, WinCE, VMS, VxWorks, Wii and Xbox。看来wince是肯定能支持的,因为它是一款基于ANSI C的嘛。

       EVC创建一个基于MFC的对话框应用测试程序,将minilzo-2.03.tar.gz解压出来的4个文件(除一个test演示文件外)加入到该工程中,编译,会看到很多警告和错误,分析来分析去原因不得而知。最后将miniLZO项目创建为一个“WCE Static Liarary”,而成功编译并得到静态库,将静态库链接入测试工程,可以正确使用。

       最后,在调查wince平台上其他的压缩方案,有价值的记载如下:

       Coredll.dll库中两个未导出的函数:BinaryCompress BinaryDecompress,使用方法摘自网上一段:

声明:

#define CECOMPRESS_ALLZEROS 0
#define CECOMPRESS_FAILED 0xffffffffUL
#define CEDECOMPRESS_FAILED 0xffffffffUL

DWORD StringCompress( LPBYTE bufin, DWORD lenin, LPBYTE bufout, DWORD lenout );
DWORD StringDecompress( LPBYTE bufin, DWORD lenin, LPBYTE bufout, DWORD lenout );

DWORD BinaryCompress( LPBYTE bufin, DWORD lenin, LPBYTE bufout, DWORD lenout );
DWORD BinaryDecompress( LPBYTE bufin, DWORD lenin, LPBYTE bufout, DWORD lenout, DWORD skip );

使用:

typedef DWORD (*tpBinaryCompress)(LPBYTE bufin, DWORD lenin, LPBYTE bufout, DWORD lenout);
typedef DWORD (*tpBinaryDecompress)(LPBYTE bufin, DWORD lenin, LPBYTE bufout, DWORD lenout, DWORD skip);

HINSTANCE hCoreDLL = ::LoadLibrary(_T("coredll.dll"));

tpBinaryCompress BinaryCompress = (tpBinaryCompress)::GetProcAddress(hCoreDLL, _T("BinaryCompress"));
tpBinaryDecompress BinaryDecompress = (tpBinaryDecompress)::GetProcAddress(hCoreDLL,_T("BinaryDecompress"));

TCHAR string[] = _T("The quick brown fox jumps over the lazy man who did not come to the aid of his country in time.");
BYTE buffer[1024];
BYTE inpBuffer[1024];

int len = wcslen(string);
int len_in = BinaryCompress((BYTE*)string, len * sizeof(TCHAR), buffer, 1024);
int len_out = BinaryDecompress(buffer, len_in, inpBuffer, 1024, 0);

       使用上述函数,仅是在wince平台上可用,没有查到对应的win32函数。也就是如果在wince上压缩过的数据,在windows平台上没有办法解开。(我用关键字“BinaryCompress”,“BinaryDecompress”搜遍了Google,没找到win32的相关内容)。

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值