1

在我的 OS X 应用程序中,我正在调用 SystemConfiguration 框架中的 SCPreferencesCreateWithAuthorization:

AuthorizationRef auth;
AuthorizationCreate(NULL, NULL, kAuthorizationFlagDefaults, &auth);
SCPreferencesRef prefRef = SCPreferencesCreateWithAuthorization(kCFAllocatorDefault,CFSTR("Get Connected"), NULL, auth);

这在 Lion 上运行良好,但是当我在 Snow Leopard 中运行该应用程序时,调用该函数时它会崩溃。奇怪的是,崩溃日志表明它认为这个符号是在 IOKit 中找到的

Dyld Error Message:
  Symbol not found: _SCPreferencesCreateWithAuthorization
  Referenced from: /Users/localadmin/Downloads/Get Connected.app/Contents/MacOS/Get Connected
  Expected in: /System/Library/Frameworks/IOKit.framework/Versions/A/IOKit

我已将 SystemConfiguration.framework 链接到 Xcode 中的目标,并在我的 AppDelegate.h 中导入了标头:

#import <SystemConfiguration/SystemConfiguration.h>

我究竟做错了什么?为什么它在 Lion 下有效,而在 Snow Leopard 下无效。文档说它在 10.5 及更高版本中可用。

4

1 回答 1

2

您是否还链接到 IOKit?尝试在链接顺序中更早地移动 SystemConfiguration。

似乎该符号也存在于 Lion 的 IOKit 框架中。我不确定 SystemConfiguration 中的符号是否只是 IOKit 中的符号的别名。

无论如何,您的应用程序依赖于 IOKit 中的应用程序,这是不可取的。

您也许可以使用nm -g -m ~/"Downloads/Get Connected.app/Contents/MacOS/Get Connected" | grep SCPref.

于 2012-05-21T20:57:41.703 回答