所以這是我第一次在C++中完成任何多線程。現在我的代碼拋出了一些我無法識別的錯誤,但它似乎表明它發生在我包含boost/thread.hpp的時候。錯誤,包括增強庫
錯誤看起來像這樣。
In file included
from /usr/include/boost/mem_fn.hpp:22:0,
from /usr/include/boost/bind/bind.hpp:26,
from /usr/include/boost/bind.hpp:22,
from /usr/include/boost/thread/detail/thread.hpp:22,
from /usr/include/boost/thread/thread.hpp:22,
from /usr/include/boost/thread.hpp:13,
from processes/Video_process.h:8,
from processes/Video_process.cpp:7:
/usr/include/boost/bind/mem_fn.hpp: In member function ‘R& boost::_mfi::dm<R, T>::operator()(T*) const [with R = void*(void*), T = Video_process]’:
/usr/include/boost/bind/bind.hpp:243:60: instantiated from ‘R boost::_bi::list1<A1>::operator()(boost::_bi::type<R>, F&, A&, long int) [with R = void* (&)(void*), F = boost::_mfi::dm<void*(void*), Video_process>, A = boost::_bi::list0, A1 = boost::_bi::value<Video_process*>]’
/usr/include/boost/bind/bind_template.hpp:20:59: instantiated from ‘boost::_bi::bind_t<R, F, L>::result_type boost::_bi::bind_t<R, F, L>::operator()() [with R = void* (&)(void*), F = boost::_mfi::dm<void*(void*), Video_process>, L = boost::_bi::list1<boost::_bi::value<Video_process*> >, boost::_bi::bind_t<R, F, L>::result_type = void* (&)(void*)]’
/usr/include/boost/thread/detail/thread.hpp:61:17: instantiated from ‘void boost::detail::thread_data<F>::run() [with F = boost::_bi::bind_t<void* (&)(void*), boost::_mfi::dm<void*(void*), Video_process>, boost::_bi::list1<boost::_bi::value<Video_process*> > >]’
processes/Video_process.cpp:240:1: instantiated from here
/usr/include/boost/bind/mem_fn.hpp:342:23: error: invalid use of non-static member function
我的代碼有點長,所以我不知道是否有將是有益的,其位,但這裏有一些反正...
1.
boost::unique_lock<boost::mutex> lock(mx);
lock.lock();
(...) //stuff
is_data_ready = 1;
lock.unlock();
2.
stserver = boost::shared_ptr<boost::thread>
(new boost::thread(boost::bind(&Video_process::streamServer, this)));
以下是在header中聲明streamServer的方法
void* streamServer(void* arg);
您能否顯示'Video_process :: streamServer'的聲明? – 2012-07-17 19:30:21
kk在這裏得到它是從頭文件的行或你的意思是函數的代碼? – user1415372 2012-07-17 19:43:28
聲明是沒有定義的函數原型(函數體)。 – 2012-07-17 19:55:20