2010年5月21日金曜日

recfriio, error: ‘condition’ in namespace ‘boost’ does not name a type

recfriio-r4 を HDUS の録画ツールとして使っているのだが、dev-libs/boost-1.41.0-r3 にバージョンをあげてからコンパイル済みバイナリが実行できなくなった。

recfriio: symbol lookup error: recfriio: undefined symbol: _ZN5boost6system18get_posix_categoryEv

ということで、コンパイルし直そうと思ったが次のようなエラーが表示されてしまった。

g++ -O2 -g -Wall -pthread -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DB25 -DHDUS -DUDP `pkg-config --cflags glib-2.0`   -c -o IoThread.o IoThread.cpp
In file included from IoThread.cpp:13:
RingBuf.hpp:90: error: ‘condition’ in namespace ‘boost’ does not name a type
RingBuf.hpp: In member function ‘void RingBuf::setReady(T*)’:
RingBuf.hpp:188: error: ‘cond’ was not declared in this scope
RingBuf.hpp: In member function ‘const T* RingBuf::getPopPtr(unsigned int)’:
RingBuf.hpp:233: error: ‘cond’ was not declared in this scope
RingBuf.hpp: In member function ‘void RingBuf::interrupt()’:
RingBuf.hpp:260: error: ‘cond’ was not declared in this scope


外部記憶装置: boost condition ここによると、boost/thread/condition.hpp を include させてあげればよいらしいので、やってみたらうまくいった。