Using CoreFoundation on Windows

  • 3698
  • 0
  • 2012-09-01

CoreFoundation库是Apple的基础库之一,定义了一些变量类型等等信息和一些基础方法,包括plist处理等等内容。文中提供一种方法直接调用CoreFoundation.dll中的导出函数实现功能。

CoreFoundation库是Apple的基础库之一,定义了一些变量类型等等信息和一些基础方法,包括plist处理等等内容。Windows上可以选择偷懒使用Apple Mobile Device中的CoreFoundation.dll。

本文基于 http://www.yonsm.net/post/507 的文章,感谢Yoasm提供的思路。

由于Yoasm的Blog系统换成了WP,因此附件没了,另外说的并不详细,因此我就发一下自己的编译过程。

 

首先是提取CoreFoundation.lib。方法如下:

Setp 1: 下载 http://sourceforge.net/projects/mingw/files/MinGW/Extension/pexports/pexports-0.44-1/ 用于提取def文件

Setp 2: 执行 pexports CoreFoundation.dll > CoreFoundation.def

Setp 3: 需要在Visuall Studio Command Prompt中执行lib /def:CoreFoundation.def /out:CoreFoundation.lib

然后是准备头文件,这个比较简单:从 http://opensource.apple.com/ 中下载CF对应压缩包,只保留*.h文件即可

程序中可使用如下方法:


#include "CoreFoundation/CoreFoundation.h"
#pragma comment(lib,"CoreFoundation.lib")

但是这里有两个问题:

1. VS缺少Cxx标准头,这些标准头可以在 http://www.opensource.apple.com/source/xnu/xnu-1456.1.26/EXTERNAL_HEADERS/ 获得

2. CoreFoundation有一个较大的库依赖,具体DLL列表如下:

ASL.dll
CoreFoundation.dll
icudt46.dll
icuin40.dll
icuuc40.dll
libdispatch.dll
libicuin.dll
libicuuc.dll
objc.dll
pthreadVC2.dll
 
这些文件均可以在默认的安装路径 C:\Program Files\Common Files\Apple\Apple Application Support 找到。
事实上更推荐使用在DLL中调用这些DLL,原因你懂得

 

 

------------------------------

文章的授權使用CC BY-ND2.5協議。凡是標示“轉載”的文章,均來源於網絡並儘可能標註作者。如果有侵犯您的權益,請及時聯繫刪除或者署名、授權。


Gtalk/Email: cmd4shell  [at]  gmail.com