2010-05-22 6 views
0

Je veux juste créer un plugin MS pour accrocher SpringBoard. Je suis « gojohnnyboi » tutoriel d'ici « http://www.ipodtouchfans.com/forums/showthread.php?t=103558 ». Pour créer un dylib sur XCode, je suis "SkylarEC" tutorial. Je mélange ces deux excellents tutoriels et finalement réussi à obtenir un dylib. Mais quand j'ai placé le dylib dans le /Library/MobileSubstrate/DynamicLibraries/ rien ne s'est passé (aucune alerte n'a été montrée).Comment créer des plugins de substrat mobiles sur XCode?

En évaluant, je trouve que ce dylib n'a pas de point de départ quand il a été chargé dans la mémoire. Donc, je l'ai mentionné un point de départ en déclarant un constructeur dans le fichier .mm comme,

__ attribute__((constructor)) static void init() 
{ 
    Class _$SBAppIcon = objc_getClass("SBApplicationIcon"); 
    MSHookMessage(_$SBAppIcon, @selector(launch), (IMP) &__$ExampleHook_AppIcon_Launch, "__OriginalMethodPrefix_"); 
} 

Mais quand je suis en train de compiler, je reçois une erreur comme,

**Undefined symbols: 
    "_MSHookMessage", referenced from: 
     init()  in ExampleHook.o 
ld: symbol(s) not found 
collect2: ld returned 1 exit status.** 

Est-ce Quelqu'un at-il une idée de comment résoudre ce problème? Ce serait génial et plus utile si quelqu'un partage le tutoriel détaillé/instructions pour créer un dylib sur XCode.

P.S J'ai placé tous les libsubstrate.dylib et les fichiers substrate.h dans l'emplacement correspondant. Et les emplacements sont,

  • libsubstrate.dylib: /Developer/Platforms/iPhoneOS.platform/Developer/usr/lib/
  • substrate.h: /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/ iPhoneOS3.0.sdk/usr/include

et mon SDK de base est 3.0.

Répondre

0

(Ce sont des tutoriels très anciens. Une partie du code moderne de MS se trouve dans http://iphonedevwiki.net/index.php/MobileSubstrate. Finalement, quelqu'un a besoin d'écrire un tutoriel mis à jour ...)


Assurez-vous que vous avez ajouté libsubstrate.dylib dans votre projet Xcode (Ajouter → Fichiers existants ...). Le compilateur ne trouvera pas automatiquement quel dylib lier sauf si vous le lui dites.

+0

Merci pour la réponse. Si je supprime le "__ attribut __ ((constructeur))" dans mon code, il est compilé avec succès. je l'ai déjà ajouté le « libsubstrate.dylib » aux cadres existants. Mais pas de chance. Pouvez-vous s'il vous plaît m'aider à résoudre ce problème de compilation? Pourquoi ne pouvez-vous (comme je le vois, vous avez une connaissance approfondie et bon cœur) a écrit un tutoriel pour les débutants comme moi? Vraiment, cela serait plus utile et grandement apprécié. – prathumca

0

Vous devez copier CydiaSubstrate.framework à /Bibliothèque/Frameworks dans votre mac et lien vers CydiaSubstrate

#include <CydiaSubstrate/CydiaSubstrate.h> 
Questions connexes