2010-05-22 1 views
0

Я просто хочу создать плагин MS для подключения SpringBoard. Я следую «gojohnnyboi« учебник отсюда »http://www.ipodtouchfans.com/forums/showthread.php?t=103558».Как создать плагины для мобильных субстратов на XCode?

Чтобы создать dylib на XCode, я следую за "SkylarEC" tutorial. Я смешиваю эти два больших учебника и, наконец, добился успеха, получив dylib. Но когда я разместил dylib в /Library/MobileSubstrate/DynamicLibraries/, ничего не произошло (предупреждение не было показано).

Оценив, я обнаружил, что этот dylib не имеет отправной точки, когда он был загружен в память. Так что я упомянул отправную точку, объявив конструктор в .mm файл, например,

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

Но когда я пытаюсь скомпилировать это, я получаю сообщение об ошибке, как,

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

ли у кого есть идея, как это решить? Было бы здорово и полезно, если бы кто-нибудь рассказал подробный учебник/инструкции для создания dylib на XCode.

P.S Я разместил все файлы libsubstrate.dylib и subst.th в соответствующем месте. И локации,

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

и мой базовый SDK 3.0.

ответ

0

(Это очень старые учебники. Некоторые современные код MS можно найти в http://iphonedevwiki.net/index.php/MobileSubstrate. В конце концов кто-то должен написать обновленный учебник ...)


Убедитесь, что вы добавили libsubstrate.dylib в вашем Xcode проекте (Добавить → Существующие файлы ...). Компилятор не будет автоматически определять, какой dylib ссылаться, если вы не скажете об этом так.

+0

Спасибо за ответ. Если я удалю атрибут __ __ ((конструктор)), то в моем коде его получение будет скомпилировано успешно. Я уже добавил «libsubstrate.dylib» к существующим фреймворкам. Но не повезло. Не могли бы вы помочь мне решить эту компиляционную проблему? Почему ты не можешь (как я вижу, у тебя полное знание и доброе сердце) написал учебник для начинающих, таких как я? На самом деле это было бы более полезно и высоко ценится. – prathumca

0

Попробуйте http://unlimapps.com/?p=15 это будет гораздо проще компилировать плагины, используя методы в этой должности

0

Вы должны скопировать CydiaSubstrate.framework в /Library/Frameworks в вашем mac и ссылку на CydiaSubstrate

#include <CydiaSubstrate/CydiaSubstrate.h>