0

对不起我的英语不好

我为浏览器制作了一个插件来firebreath构建ois库,它将在firebreath上包含插件并出现错误

Undefined symbols for architecture i386:
  "_IOCreatePlugInInterfaceForService", referenced from:
      OIS::MacHIDManager::iterateAndOpenDevices(unsigned int) in libois.a(MacHIDManager.o)
  "_IODestroyPlugInInterface", referenced from:
      OIS::MacHIDManager::iterateAndOpenDevices(unsigned int) in libois.a(MacHIDManager.o)
  "_IOIteratorNext", referenced from:
      OIS::MacHIDManager::iterateAndOpenDevices(unsigned int) in libois.a(MacHIDManager.o)
  "_IOObjectRelease", referenced from:
      OIS::MacHIDManager::iterateAndOpenDevices(unsigned int) in libois.a(MacHIDManager.o)
  "_IORegistryEntryCreateCFProperties", referenced from:
      OIS::MacHIDManager::iterateAndOpenDevices(unsigned int) in libois.a(MacHIDManager.o)
  "_IOServiceGetMatchingServices", referenced from:
      OIS::MacHIDManager::lookUpDevices(int, int) in libois.a(MacHIDManager.o)
  "_IOServiceMatching", referenced from:
      OIS::MacHIDManager::lookUpDevices(int, int) in libois.a(MacHIDManager.o)
  "_kIOMasterPortDefault", referenced from:
      OIS::MacHIDManager::lookUpDevices(int, int) in libois.a(MacHIDManager.o)
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)

链接有问题?或其他?我该如何解决?

4

1 回答 1

2

您似乎没有链接所需的库。快速的google 搜索表明您需要链接到 IOKit 框架以获取这些符号中的至少一些。

我建议您查看 Firebreath.org 上的Using Libraries页面,了解有关如何链接到 Mac 框架的信息。它看起来像这样:

find_library(FRAMEWORK_IOKIT IOKit)
target_link_libraries(${PROJECT_NAME} ${FRAMEWORK_IOKIT})

这需要在您的 add_mac_plugin 调用之后的某个地方进入 Mac/projectDef.cmake。

于 2013-01-16T16:44:03.387 回答