首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >cgeventtap的apple mach-o链接器id错误

cgeventtap的apple mach-o链接器id错误
EN

Stack Overflow用户
提问于 2011-11-10 11:30:56
回答 1查看 299关注 0票数 1

我在试着让CGEventTap工作。我认为我已经正确地完成了所有的工作,但是当我开始运行时,我得到了这个错误:

代码语言:javascript
复制
Apple Mach-O Linker (id) Error

Undefined symbols for architecture x86_64:
  "_tapCallback", referenced from:
      -[TestAppDelegate applicationDidFinishLaunching:] in TestAppDelegate.o
ld: symbol(s) not found for architecture x86_64
collect2: ld returned 1 exit status
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-11-10 13:50:13

听起来您已经定义了tapCallback()函数,但实际上并没有实现它。换句话说,您的TestAppDelegate类可能如下所示:

代码语言:javascript
复制
#import "TestAppDelegate.h"

CGEventRef tapCallback(CGEventTapProxy proxy,
            CGEventType type,
           CGEventRef event,
              void *userInfo);


@implementation TestAppDelegate

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
    CFMachPortRef eventTapRef = CGEventTapCreate(kCGSessionEventTap, 
                                                 kCGTailAppendEventTap,
                                                 kCGEventTapOptionListenOnly,
                                                 kCGEventMaskForAllEvents,
                                                 tapCallback,
                                                 NULL);
    // additional code

}

@end

在这个过程中,您需要实际实现tapCallback()函数。如果您实际上已经实现了它,比如在另一个文件中,请确保该文件包含在您的构建目标中。

否则,这样做应该允许程序运行:

代码语言:javascript
复制
CGEventRef tapCallback(CGEventTapProxy proxy,
                             CGEventType type,
                                CGEventRef event,
                                   void *userInfo) {
    NSLog(@"tapCallback()");
    return event;
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8074688

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档