Ссылка на CoreTelephony Framework (iOS) - PullRequest
       25

Ссылка на CoreTelephony Framework (iOS)

1 голос
/ 05 сентября 2011

Кто-нибудь знает, почему я получаю ошибку компоновщика при попытке скомпилировать следующий код:

extern void * _CTServerConnectionCreate(CFAllocatorRef, int (*)(void *, CFStringRef, CFDictionaryRef, void *), int *);

int callback(void *connection, CFStringRef string, CFDictionaryRef dictionary, void *data) 
{
    return 0;
}

%hook UIKeyboard

-(id)hitTest:(CGPoint)test withEvent:(id)event
{
    int x = 0;
    _CTServerConnectionCreate(kCFAllocatorDefault, callback, &x);
    return %orig;
}

%end

make вывод:

Неопределенные символы для архитектуры armv6: " CTServerConnectionCreate ( _CFAllocator const *, int () (void , __CFString const *, __CFDictionary const *, void *), int *)", на который ссылаются из: $ _ungrouped $ UIKeyboard $ hitTest $ withEvent $ (UIKeyboard *, objc_selector *, CGPoint, objc_object *) в Tweak.xm.o ld: символ (ы) не найден для архитектуры armv6 collect2: ld вернул 1 статус выхода

Некоторые примечания:

  • Я связываюсь с CoreTelephony с помощью -рамки CoreTelephony
  • Я использую код отсюда Пример базовой телефонии
  • Я пробовал на iOS 4.x и iOS 5.x
  • Я использовал нм , чтобы убедиться, что вызов функции находится внутри двоичного файла

И да, я на взломанном устройстве.

Спасибо;)

Ответы [ 2 ]

0 голосов
/ 15 января 2012

Возможно, вы захотите объявить вашу частную функцию без подчеркивания.

 extern void *CTServerConnectionCreate();

// Call
myRes = CTServerConnectionCreate(args);

Компилятор автоматически добавит префикс подчеркивания.

0 голосов
/ 15 января 2012

Просто включите CoreTelephony.framework в XCode. Должно работать!

...