1
私はsixense(ゲームコントローラのドライバ)から独自のsdkを使用しようとしています。彼らはboost :: threadに静的にリンクしているようです。私のアプリケーションといくつかの依存関係もboost :: threadを使用し、segfaultを取得します。Segfaultはサードパーティのライブラリからの名前の衝突のために
Program received signal SIGSEGV, Segmentation fault.
0x00007ffff7bd1bb5 in boost::thread::start_thread()() from /usr/lib/libboost_thread.so.1.42.0
(gdb) bt
#0 0x00007ffff7bd1bb5 in boost::thread::start_thread()() from /usr/lib/libboost_thread.so.1.42.0
#1 0x00007ffff79869bb in USBDetector::start_hotplug_thread()()
from /home/joschu/Downloads/sixenseSDK_linux_OSX/samples/linux_x64/sixense_simple3d/libsixense_x64.so
#2 0x00007ffff7986c7e in USBDetector::start(std::vector<unsigned int, std::allocator<unsigned int> >, std::vector<std::vector<unsigned int, std::allocator<unsigned int> >, std::allocator<std::vector<unsigned int, std::allocator<unsigned int> > > >, std::vector<unsigned int, std::allocator<unsigned int> >)() from /home/joschu/Downloads/sixenseSDK_linux_OSX/samples/linux_x64/sixense_simple3d/libsixense_x64.so
#3 0x00007ffff7987298 in USBManagerLinux::start(std::vector<unsigned int, std::allocator<unsigned int> >, std::vector<std::vector<unsigned int, std::allocator<unsigned int> >, std::allocator<std::vector<unsigned int, std::allocator<unsigned int> > > >, std::vector<unsigned int, std::allocator<unsigned int> >, int)() from /home/joschu/Downloads/sixenseSDK_linux_OSX/samples/linux_x64/sixense_simple3d/libsixense_x64.so
#4 0x00007ffff79842f3 in USBManager::start(std::vector<unsigned int, std::allocator<unsigned int> >, std::vector<std::vector<unsigned int, std::allocator<unsigned int> >, std::allocator<std::vector<unsigned int, std::allocator<unsigned int> > > >, std::vector<unsigned int, std::allocator<unsigned int> >, int)() from /home/joschu/Downloads/sixenseSDK_linux_OSX/samples/linux_x64/sixense_simple3d/libsixense_x64.so
#5 0x00007ffff79a03d6 in DriverMain::start(int)()
from /home/joschu/Downloads/sixenseSDK_linux_OSX/samples/linux_x64/sixense_simple3d/libsixense_x64.so
#6 0x00007ffff79a1e32 in sixenseInit()
from /home/joschu/Downloads/sixenseSDK_linux_OSX/samples/linux_x64/sixense_simple3d/libsixense_x64.so
#7 0x0000000000400d0d in main() at /home/joschu/bulletsim/src/hydra/hi.cpp:6
私はプロジェクトがリンクされている方法を中心に切り替えた場合、私は私の他のライブラリがsixenseのブースト::スレッドを呼び出してしまうことがわかりました。
この問題の回避方法はありますか?彼らは静的に後押しするリンクのように見えます
は、彼らはすべてをエクスポートしlibsixense_x64.so、にそれをリンクさ。徹底的な答えをありがとう。 – John