2010-04-26 4 views
2

Je suis passé par this tutorial pour créer un addon MobileSubstrate. Je pourrais compiler le example hook sans erreurs.Tentative de compilation de l'addon MobileSubstrate - Symbole non défini

Mais dès que j'ajoute

#import <SpringBoard/SBAwayController.h> 

dans ExampleHookProtocol.h et

SBAwayController *awayController = [SBAwayController sharedAwayController]; 

dans ExampleHookLibrary.mm (comme la première ligne de la fonction __$ExampleHook_AppIcon_Launch) je reçois le message d'erreur suivant lors d'une tentative de make (déclenché par le dernier changement):

Undefined symbols: 
    "_OBJC_CLASS_$_SBAwayController", referenced from: 
    [email protected] in ExampleHookLibrary.o 
ld: symbol(s) not found 
collect2: ld returned 1 exit status 
make: *** [ExampleHook.dylib] Error 1. 

Le fichier d'en-tête pour SBAwayController est situé dans /var/toolchain/sys30/usr/include/SpringBoard, tout comme SBApplicationIcon.h, qui est utilisé par le ExampleHook.

Je compile sur mon iPod touch 2G.

Quelqu'un peut-il m'aider?

Merci à l'avance,

Eric

Répondre

6

Comme il n'y a rien à créer un lien vers lorsque vous compilez, vous devez obtenir la classe lors de l'exécution, il faut donc ajouter

Class $SBAwayController = objc_getClass("SBAwayController"); 

dans le initialiseur, et changer

SBAwayController *awayController = [SBAwayController sharedAwayController]; 

à

SBAwayController *awayController = [$SBAwayController sharedAwayController]; 
+0

Je sais que cela est une * très * vieille question, mais j'aurais l'utilisation possible du '% c' directive Logos documenté ici. – Matoe

+0

Cela a littéralement ouvert mes yeux au monde de peaufiner le lockascreen: D –

1

Vous pouvez également utiliser:

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