2011-06-23 10 views
2

私はすべてのブラウザとプラットフォームでジョイスティックの入力を処理するブラウザプラグインを作成しています。 LinuxとWindowsで動作していますが、XcodeでOISライブラリにリンクする際に問題があります。OSXのXcodeでOISとCMakeをリンクする

私はOISを構築し、libOIS.aとOIS.dylibを取得し、次のようにCMakeのとそれらを結ぶいました:

find_library(CARBON NAMES Carbon) 
find_library(IOKIT NAMES IOKit) 

target_link_libraries(${PROJECT_NAME} 
${PLUGIN_INTERNAL_DEPS} 
${CARBON} 
${IOKIT} 
"${CMAKE_CURRENT_SOURCE_DIR}/lib/libOIS.a" 
) 

しかし、私はまだエラー私はOISクラスを使用しようとするたびに取得しています私のコードから、プロジェクトをビルドする:

ld warning: in /Users/Lana/Documents/STRd6/boomsticks/Boomstick/lib/libOIS.a, missing required architecture x86_64 in file 

Undefined symbols: 
"OIS::InputManager::destroyInputSystem(OIS::InputManager*)", referenced from: 
    JoysticksHandler::~JoysticksHandler()in Joysticks.o 
    JoysticksHandler::~JoysticksHandler()in Joysticks.o 
"OIS::InputManager::createInputSystem(std::multimap<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::less<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >&)", referenced from: 
    JoysticksHandler::initialize()  in Joysticks.o 
"OIS::InputManager::enableAddOnFactory(OIS::InputManager::AddOnFactories)", referenced from: 
    JoysticksHandler::initialize()  in Joysticks.o 
"OIS::InputManager::getNumberOfDevices(OIS::Type)", referenced from: 
    JoysticksHandler::initialize()  in Joysticks.o 
"typeinfo for OIS::Exception", referenced from: 
    GCC_except_table44 in Joysticks.o 
"OIS::InputManager::createInputObject(OIS::Type, bool, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)", referenced from: 
    JoysticksHandler::initialize()  in Joysticks.o 
ld: symbol(s) not found 
collect2: ld returned 1 exit status 

私はXCodeのについては何も知らないが、私は、LinuxおよびWindows上で非常に類似したプロセスと同じコード・建物を取得することができました。

+0

答えはこれまでに見つかりましたか? – CoolAJ86

答えて

0

ここでは、リンカの警告があなたに手がかりを与える:

ld warning: in /...k/lib/libOIS.a, missing required architecture x86_64 in file 

リンカはあなたがx86_64のアーキテクチャのための実装を持っていないライブラリファイルにリンクしようとしていることを語っています。どのようにその図書館を建てましたか?

ユニバーサルバイナリ実行可能ファイルをビルドしていて、シンボルがx86_64バージョン用ではありません...またはライブラリの新しいバージョン用のヘッダーファイルがありますが、.aファイルであり、アプリケーションコードで参照しているシンボルは、ソースツリーの.aファイルに存在しません。