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

问题描述 投票:0回答:2

我完成了本教程来创建 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 上进行编译。

有人可以帮助我吗?

objective-c iphone gcc makefile
2个回答
6
投票

由于编译时没有任何东西可以链接,所以需要在运行时获取类,所以添加

Class $SBAwayController = objc_getClass("SBAwayController");

在初始化器中,并更改

SBAwayController *awayController = [SBAwayController sharedAwayController];

SBAwayController *awayController = [$SBAwayController sharedAwayController];

1
投票

您还可以使用:

SBAwayController *awayController = [objc_getClass("SBAwayController") sharedAwayController];
© www.soinside.com 2019 - 2024. All rights reserved.