我通过this tutorial创建了一个MobileSubstrate插件。我可以编译example hook而不会出错。
但是一旦我添加
#import <SpringBoard/SBAwayController.h>
<{1>}和中的
ExampleHookProtocol.h
SBAwayController *awayController = [SBAwayController sharedAwayController];
中的(作为ExampleHookLibrary.mm
函数的第一行)在尝试__$ExampleHook_AppIcon_Launch
时(后一个更改触发),我收到以下错误消息:
make
SBAwayController的头文件位于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.
,就像ExampleHook使用的/var/toolchain/sys30/usr/include/SpringBoard
一样。
我在iPod touch 2G上进行编译。
任何人都可以帮助我吗?
提前致谢,
埃里克
答案 0 :(得分:6)
由于编译时无需链接,因此需要在运行时获取类,因此添加
Class $SBAwayController = objc_getClass("SBAwayController");
在初始化程序中,然后更改
SBAwayController *awayController = [SBAwayController sharedAwayController];
到
SBAwayController *awayController = [$SBAwayController sharedAwayController];
答案 1 :(得分:1)
您也可以使用:
SBAwayController *awayController = [objc_getClass("SBAwayController") sharedAwayController];