【问题标题】:Trying to compile MobileSubstrate addon - Undefined symbol尝试编译 MobileSubstrate 插件 - 未定义符号
【发布时间】:2010-04-26 11:58:13
【问题描述】:

我通过this tutorial 创建了一个 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,就像被ExampleHook 使用的SBApplicationIcon.h

我正在我的 iPod touch 2G 上编译。

谁能帮帮我?

提前致谢,

埃里克

【问题讨论】:

    标签: iphone objective-c gcc compiler-construction makefile


    【解决方案1】:

    由于编译的时候没有什么可以链接的,所以需要在运行时获取类,所以添加

    Class $SBAwayController = objc_getClass("SBAwayController");
    

    在初始化器中,并改变

    SBAwayController *awayController = [SBAwayController sharedAwayController];
    

    SBAwayController *awayController = [$SBAwayController sharedAwayController];
    

    【讨论】:

    • 我知道这是一个非常老问题,但我可能会使用此处记录的%c Logos 指令。
    • 这确实让我看到了调整锁屏的世界:D
    【解决方案2】:

    你也可以使用:

    SBAwayController *awayController = [objc_getClass("SBAwayController") sharedAwayController];
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-12-31
      • 1970-01-01
      • 1970-01-01
      • 2013-03-07
      • 2015-05-23
      • 2016-11-18
      • 1970-01-01
      相关资源
      最近更新 更多