Kompilacja i łącze biblioteki dynamicznej iOS 6.1

Próbuję utworzyć dynamiczną bibliotekę dla iOS i załadować ją w czasie wykonywania. Po obejrzeniuto pytanie ita odpowiedź, Robiłem to za pomocą iOSOpenDev i wdrażałem wszystko na moim iPhonie. Projekt xCode dla dylib nazywa się KDylibTwo, a pliki, które wymodelowałem to:

KDylibTwo.h

#import <Foundation/Foundation.h>

@interface KDylibTwo : NSObject
-(void)run;
@end

KDylibTwo.m

#import "KDylibTwo.h"

@implementation KDylibTwo

-(id)init
{
    if ((self = [super init]))
    {
    }

    return self;
}

-(void)run{
    NSLog(@"KDylibTwo loadded.");
}

@end

Aby sprawdzić, czy moja biblioteka działa, po zbudowaniu jej do profilowania (sposób, w jaki iOSOpenDev wdraża ją na iPhone), mogę znaleźć ją w moim urządzeniu pod adresem/usr/lib/libKDylibTwo.dylib i zbudowałem tweak (ponownie używając iOSOpenDev), podpinając SpringBoard w następujący sposób:

#include <dlfcn.h>

%hook SBApplicationIcon

-(void)launch{
    NSLog(@"\n\n\n\n\n\n\nSBHook For libKDylibTwo.dylib");

    void* dylibLink = dlopen("/usr/lib/libKDylibTwo.dylib", RTLD_NOW);

    if(dylibLink == NULL) {
        NSLog(@"Loading failed.");
    } else {
        NSLog(@"Dylib loaded.");

        void (*function)(void);
        *(void **)(&function) = dlsym(dylibLink, "run");
        if (function) {
            NSLog(@"Function found.");
            (*function)();
        } else {
            NSLog(@"Function NOT found");
        }
    }

    NSLog(@"End of code");
    %log;
    %orig;
}

%end

Po zainstalowaniu ulepszenia na urządzeniu i dotknięciu ikony (która uruchomiłaby zahaczony kod), wyjście konsoli wygląda:

Aug 28 13:03:35 Pudge SpringBoard[18254] <Warning>: SBHook For libKDylibTwo.dylib
Aug 28 13:03:35 Pudge SpringBoard[18254] <Warning>: Dylib loaded.
Aug 28 13:03:35 Pudge SpringBoard[18254] <Warning>: Function NOT found
Aug 28 13:03:35 Pudge SpringBoard[18254] <Warning>: End of code
Aug 28 13:03:35 Pudge SpringBoard[18254] <Warning>: -[<SBApplicationIcon: 0x1d5008c0> launch]

Moje pytanie brzmi: co robię źle, a funkcja biblioteki nie jest wywoływana ani wykonywana! Myślę, że powinienem wyjaśnić, że mówię tylko o urządzeniach z jailbreakiem, a nie o rozwoju App Store, więc proszę nie pisać dalej, że nie można tego zrobić!

Z góry dziękuję,
Panagiotis.

questionAnswers(2)

yourAnswerToTheQuestion