0

我有一个 Mac 应用程序,由于我无法控制的各种原因,我必须针对 Mac OS 10.4 SDK 构建它。鉴于我的应用程序的最低操作系统版本为 10.5。(我知道,我知道......但我不能提供比上述更多的细节来证明为什么会这样。)

在 Mac OS 10.5 SDK 中有一个 API,FSMatchAliasBulk我在 10.4 SDK 中找不到一个好的等价物。知道我将在 Mac OS >= 10.5 上运行,我如何才能FSMatchAliasBulk在运行时访问?

4

1 回答 1

1

首先,通过从 Xcode 帮助菜单中选择“开发人员文档”来查看 Xcode 帮助中的“交叉开发如何工作”。在文档窗口中,输入“How Cross-Development Works”并点击返回。在那里你会看到更多信息。

这就是我认为您需要做的事情:加载 CoreServices 框架,然后如果您知道您在 Mac OS X 10.5 上运行,则获取该函数的函数指针(查看格式塔功能以确定这一点)。

这是一个未经测试的示例,但应该会引导您朝着正确的方向前进:

CFBundleRef systemBundle = NULL;

short result = LoadFrameworkBundle(CFSTR("CoreServices.framework"), &systemBundle);

if (result == 0) {
 typedef OSStatus (FSMatchAliasBulkProcPtr) (const FSRef*, unsigned long, AliasHandle, short*, FSRef*, Boolean*, FSAliasFilterProcPtr, void*);

 FSMatchAliasBulkProcPtr myFSMatchAliasBulk = (FSMatchAliasBulkProcPtr) CFBundleGetFunctionPointerForName(systemBundle, CFSTR("FSMatchAliasBulk"));

 if (myFSMatchAliasBulk) {
 // call FSMatchAliasBulk
    OSStatus status = myFSMatchAliasBulk(....);
 }
 }
于 2009-11-11T21:02:10.457 回答