だから私は、過去数ヶ月にわたって python を勉強している noob です。私は最近、 PyWiiUseという Python ライブラリを発見し、それを使って WiiMote で楽しいことをしたいと考えました。このライブラリは C ライブラリWiiUseの単なるラッパーであるため、何かを開始する前に両方のライブラリをインストールする必要があることがわかりました。
Mac でマウンテン ライオンを実行していますが、WiiUse ライブラリのコンパイルとインストールで深刻な問題が発生しました。README には、cmake を使用してソース コードの MakeFile を生成するように記載されています。cmake、xcode、および xcode コマンド ライン ツールをインストールした後、次のコマンドを実行しました。
cd /build_directory
cmake /source_directory
make
make install
cmake は MakeFile の作成に成功し、gnu make ソフトウェアはスタティック ライブラリ "libwiiuse.a" とヘッダー ファイル "wiiuse.h" をビルドしてインストールしました。静的ライブラリは /usr/local/lib にインストールされ、ヘッダー ファイルは /usr/local/include にインストールされました。
静的ライブラリをどうすればよいかわかりませんでした。README ファイルを見て、libwiiuse.so の形式でリンクされたライブラリを取得できると確信しました。スタティック ライブラリについて調べたところ、それらはコンパイルされたコードの単なるアーカイブであることがわかりました。アーカイブから .o ファイルを libwiiuse というフォルダーに抽出し、次のコードを実行しました。
gcc -shared -o libwiiuse.so io.o os_mac_find.o classic.o ir.o os_mac_interface.o dynamics.o motion_plus.o util.o events.o nunchuk.o wiiboard.o guitar_hero_3.o os_mac.o wiiuse.o
すべての「.o」(オブジェクト?) ファイルを 1 つの「.so」(共有オブジェクト?) ファイルにコンパイルしようとしました。私が得た結果は予想外でした。
Undefined symbols for architecture x86_64:
"_IOBluetoothNSStringFromDeviceAddress", referenced from:
-[WiiuseDeviceInquiry collectResultsOf:] in os_mac_find.o
"_NSDefaultRunLoopMode", referenced from:
-[WiiuseDeviceInquiry wait] in os_mac_find.o
-[WiiuseWiimote waitForIncomingData:] in os_mac.o
"_OBJC_CLASS_$_IOBluetoothDeviceInquiry", referenced from:
objc-class-ref in os_mac_find.o
_OBJC_CLASS_$_IOBluetoothHostController", referenced from:
objc-class-ref in os_mac_find.o
"_OBJC_CLASS_$_NSAutoreleasePool", referenced from:
objc-class-ref in os_mac_find.o
objc-class-ref in os_mac_interface.o
objc-class-ref in os_mac.o
"_OBJC_CLASS_$_NSData", referenced from:
objc-class-ref in os_mac.o
"_OBJC_CLASS_$_NSDate", referenced from:
objc-class-ref in os_mac_find.o
objc-class-ref in os_mac.o
"_OBJC_CLASS_$_NSLock", referenced from:
objc-class-ref in os_mac.o
"_OBJC_CLASS_$_NSMutableArray", referenced from:
objc-class-ref in os_mac.o
"_OBJC_CLASS_$_NSObject", referenced from:
_OBJC_CLASS_$_WiiuseDeviceInquiry in os_mac_find.o
_OBJC_CLASS_$_WiiuseWiimote in os_mac.o
_OBJC_CLASS_$_WiiuseDisconnectionMessage in os_mac.o
_OBJC_CLASS_$_WiiuseReceivedData in os_mac.o
"_OBJC_CLASS_$_NSRunLoop", referenced from:
objc-class-ref in os_mac_find.o
objc-class-ref in os_mac.o
"_OBJC_METACLASS_$_NSObject", referenced from:
_OBJC_METACLASS_$_WiiuseDeviceInquiry in os_mac_find.o
_OBJC_METACLASS_$_WiiuseWiimote in os_mac.o
_OBJC_METACLASS_$_WiiuseReceivedData in os_mac.o
_OBJC_METACLASS_$_WiiuseDisconnectionMessage in os_mac.o
"__objc_empty_cache", referenced from:
_OBJC_CLASS_$_WiiuseDeviceInquiry in os_mac_find.o
_OBJC_METACLASS_$_WiiuseDeviceInquiry in os_mac_find.o
_OBJC_CLASS_$_WiiuseWiimote in os_mac.o
_OBJC_CLASS_$_WiiuseDisconnectionMessage in os_mac.o
_OBJC_CLASS_$_WiiuseReceivedData in os_mac.o
_OBJC_METACLASS_$_WiiuseWiimote in os_mac.o
_OBJC_METACLASS_$_WiiuseReceivedData in os_mac.o
...
"__objc_empty_vtable", referenced from:
_OBJC_CLASS_$_WiiuseDeviceInquiry in os_mac_find.o
_OBJC_METACLASS_$_WiiuseDeviceInquiry in os_mac_find.o
_OBJC_CLASS_$_WiiuseWiimote in os_mac.o
_OBJC_CLASS_$_WiiuseDisconnectionMessage in os_mac.o
_OBJC_CLASS_$_WiiuseReceivedData in os_mac.o
_OBJC_METACLASS_$_WiiuseWiimote in os_mac.o
_OBJC_METACLASS_$_WiiuseReceivedData in os_mac.o
...
"_objc_msgSend", referenced from:
-[WiiuseDeviceInquiry initWithMemory:maxDevices:timeout:] in os_mac_find.o
-[WiiuseDeviceInquiry start] in os_mac_find.o
-[WiiuseDeviceInquiry wait] in os_mac_find.o
-[WiiuseDeviceInquiry collectResultsOf:] in os_mac_find.o
-[WiiuseDeviceInquiry run] in os_mac_find.o
_wiiuse_os_find in os_mac_find.o
_wiiuse_os_connect_single in os_mac_interface.o
...
"_objc_msgSendSuper2", referenced from:
-[WiiuseDeviceInquiry initWithMemory:maxDevices:timeout:] in os_mac_find.o
-[WiiuseWiimote initWithPtr:device:] in os_mac.o
-[WiiuseWiimote dealloc] in os_mac.o
-[WiiuseReceivedData initWithData:] in os_mac.o
-[WiiuseReceivedData dealloc] in os_mac.o
"_objc_msgSend_fixup", referenced from:
l_objc_msgSend_fixup_release in os_mac_find.o
l_objc_msgSend_fixup_count in os_mac_find.o
l_objc_msgSend_fixup_objectAtIndex_ in os_mac_find.o
l_objc_msgSend_fixup_alloc in os_mac_find.o
l_objc_msgSend_fixup_alloc in os_mac_interface.o
l_objc_msgSend_fixup_release in os_mac_interface.o
l_objc_msgSend_fixup_retain in os_mac.o
...
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
だから私はここでかなり立ち往生しています。オブジェクト ファイルが X86 64 アーキテクチャ用にビルドされているかどうかわからなかったので、すべてのファイルに対して「file」コマンドを実行し、それぞれについて同じ結果を得ました。
Mach-O 64-bit object x86_64
おそらく本当に簡単にやりたいことはわかっていますが、ここで苦労しています。誰でも私を助けることができますか?