我完成了本教程来创建 MobileSubstrate 插件。我可以毫无错误地编译 example hook。
但是一旦我添加
#import <SpringBoard/SBAwayController.h>
在
ExampleHookProtocol.h
和
SBAwayController *awayController = [SBAwayController sharedAwayController];
在
ExampleHookLibrary.mm
(作为 __$ExampleHook_AppIcon_Launch
函数的第一行)尝试 make
(由后一个更改触发)时收到以下错误消息:
Undefined symbols:
"_OBJC_CLASS_$_SBAwayController", referenced from:
__objc_classrefs__DATA@0 in ExampleHookLibrary.o
ld: symbol(s) not found
collect2: ld returned 1 exit status
make: *** [ExampleHook.dylib] Error 1.
SBAwayController 的头文件位于
/var/toolchain/sys30/usr/include/SpringBoard
,就像 SBApplicationIcon.h
一样,由ExampleHook 使用。
我正在我的 iPod touch 2G 上进行编译。
有人可以帮助我吗?
由于编译时没有任何东西可以链接,所以需要在运行时获取类,所以添加
Class $SBAwayController = objc_getClass("SBAwayController");
在初始化器中,并更改
SBAwayController *awayController = [SBAwayController sharedAwayController];
到
SBAwayController *awayController = [$SBAwayController sharedAwayController];
您还可以使用:
SBAwayController *awayController = [objc_getClass("SBAwayController") sharedAwayController];