合并应用资源 - mac

时间:2012-07-15 17:20:48

标签: c++ macos merge

我有一个mac应用程序,想要隐藏它的资源。在Windows上,我只是创建了一个资源文件,但在Mac上似乎并不存在。所以我决定遵循this链接的建议。

我要做的是,在另一个预先准备资源的应用程序中,我将获取所有资源(文本文件,图像,声音文件等)并将它们转换为CFData个对象。然后我将它们存储在CFDictionary对象中,文件名为关键字。之后,我要将字典保存到文件中。

问题是,CFDictionary对象不知道如何归档自己,而且我不能使用Foundation对象,只是Core Foundation。有没有办法将CFDictionary转换为char*并保存?或者我是否必须单独保存密钥和值并稍后阅读以重新创建CFDictionary?如果是这样,我将如何转换CFData个对象?

1 个答案:

答案 0 :(得分:1)

我发现this interesting page有一个将CFDictionary转换为CFData的实用方法:

inline CFDataRef makeCFData(CFDictionaryRef dictionary)
{
    return CFPropertyListCreateXMLData(NULL, dictionary);
}

我不知道它是否适用于图像和声音。您可能必须先将它们转换为CFData