CFLite for VC:移植 Core Foundation 到 Visual C++ 中

| 分类 文档  | 标签 编程 

Core Foundation 是 Apple 的开源基础组件,提供了各种基础设施,如 PLIST 处理、XML parser、String、Array、Dictionary 等等

在处理 Apple 平台的某些东西(比如处理 Mac OSX、iPhone、iPad 的 plist 文件)的时候可能需要用到 Apple 的 Core Foundation。当然在 Xcode 中可以很轻易使用这些东西(内置的),但在 Win32 中却有些麻烦(有时候可能会在 Windows 下处理点什么)。

网上搜索 CFLite (http://www.kjams.com/wiki/Code/CFLite) 可以找到一个网站,精简了 CoreFoundation 并提供了些 DLL l以便在 Win32 中使用它——但,这个东西太老了(2008年的更新),以至于都不支持 binary plist 这些 iPhone 中最常用的 plist 格式的读写。

正好想弄个 iPhone/iPad PLIST 的命令行编辑工具,所以自己移植了一下 Core Foundation。参看附件中的 CFLite 目录:

  1. CoreFoundation:头文件,从“http://www.opensource.apple.com/”中下载的 10.6.2 的版本(10.6.3尚未提供)。

  2. Redist:运行库,从 iTunes 安装后的“C:\Program Files\Common Files\Apple\Apple Application Support”中打包的运行时DLL。本来想把 Core Foundation 的 C 文件编译一下做成静态库的,折腾了好久没搞定,暂时用用 40M 的庞大的 运行库吧。

  3. CoreFoundation.lib,从 Redist\CoreFoundation.dll 中手工制作的LIB文件,制作方法如下:

1、在 Visuall Studio Command Prompt 执行:
dumpbin /exports CoreFoundation.dll > CoreFoundation.def

2、编辑 yourdll.def 文件,使之格式与.def文件格式一致。比如:
LIBRARY CoreFoundation
EXPORTS
fn1;
fn2;
3、在命令行执行:
lib /def:CoreFoundationl.def /machine:i386 /out:CoreFoundationl.lib

如果需要其他的DLL中的功能,可以类推。

  1. 其他 .h 文件,GNU 兼容的 头文件。

其他的文件是 PLCMD 的东西,PLED.cpp 可以认为是一个 PLIST 读写的 Sample 吧:)

下载


上一篇     下一篇