链接CoreTelephony Framework(iOS)

时间:2011-09-05 18:15:20

标签: objective-c ios ios4 ios5 core-telephony

当我尝试编译以下代码时,是否有人知道我为什么会收到链接器错误:

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

制作输出为:

  

架构armv6的未定义符号:     “ CTServerConnectionCreate( _CFAllocator const *,int()(void ,__ CFString const *,__ CFDictionary const *,void *),int *)”,引用自:         Tweak.xm.o中$ _ungrouped $ UIKeyboard $ hitTest $ withEvent $(UIKeyboard *,objc_selector *,CGPoint,objc_object *)   ld:找不到架构armv6的符号   collect2:ld返回1退出状态

一些注意事项:

  • 我用 -framework CoreTelephony
  • 链接CoreTelephony
  • 我使用此处的代码Core Telephony Example
  • 我在iOS 4.x和iOS 5.x
  • 上都尝试过
  • 我使用 nm 来确保函数调用在二进制文件

是的,我正在使用越狱设备。

谢谢;)

2 个答案:

答案 0 :(得分:0)

只需在XCode中包含CoreTelephony.framework即可。应该工作!

答案 1 :(得分:0)

您可能希望声明没有下划线的私有函数。

 extern void *CTServerConnectionCreate();

// Call
myRes = CTServerConnectionCreate(args);

编译器会自动添加下划线前缀。