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 フレームワークにリンクする必要があることがわかります。

Mac フレームワークにリンクする方法については、Firebreath.orgのUsing Librariesページを参照することをお勧めします。次のようになります。

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

これは、add_mac_plugin 呼び出しの後の Mac/projectDef.cmake のどこかに移動する必要があります。

于 2013-01-16T16:44:03.387 に答える