尝试编译MobileSubstrate插件 - 未定义的符号

eWo*_*olf 2 compiler-construction iphone gcc makefile objective-c

我通过本教程创建了一个MobileSubstrate插件.我可以编译示例钩子没有错误.

但是只要我补充一下

#import <SpringBoard/SBAwayController.h>
Run Code Online (Sandbox Code Playgroud)

ExampleHookProtocol.h

SBAwayController *awayController = [SBAwayController sharedAwayController];
Run Code Online (Sandbox Code Playgroud)

in 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.
Run Code Online (Sandbox Code Playgroud)

SBAwayController的头文件位于/var/toolchain/sys30/usr/include/SpringBoard,例如SBApplicationIcon.h,ExampleHook使用的头文件.

我正在编译我的iPod touch 2G.

谁能帮我?

提前致谢,

埃里克

con*_*dev 6

由于编译时无需链接,因此需要在运行时获取类,因此请添加

Class $SBAwayController = objc_getClass("SBAwayController");
Run Code Online (Sandbox Code Playgroud)

在初始化程序中,并进行更改

SBAwayController *awayController = [SBAwayController sharedAwayController];
Run Code Online (Sandbox Code Playgroud)

SBAwayController *awayController = [$SBAwayController sharedAwayController];
Run Code Online (Sandbox Code Playgroud)