I'm trying to build the gr-smart_meter blocks for GRC however I need some help trying to figure out what the hang up is. I'm working with Ubuntu 18.04 Bionic and installed all the dependencies outlined in this write up (https://wiki.recessim.com/view/Gr-smart_meters_Setup_Guide).
Fair warning but I'm not a C++ dev so I'm really unfamiliar with this. Below is what I'm getting when I try to compile this code.
[ 7%] Building CXX object lib/CMakeFiles/gnuradio-smart_meters.dir/GridStream_impl.cc.o
In file included from /usr/include/boost/bind.hpp:22:0,
from /usr/include/boost/thread/detail/thread.hpp:30,
from /usr/include/boost/thread/thread_only.hpp:22,
from /usr/include/boost/thread/thread.hpp:12,
from /usr/include/gnuradio/thread/thread.h:31,
from /usr/include/gnuradio/basic_block.h:31,
from /usr/include/gnuradio/block.h:27,
from /home/user/Software/gr-smart_meters/lib/../include/smart_meters/GridStream.h:25,
from /home/user/Software/gr-smart_meters/lib/GridStream_impl.h:24,
from /home/user/Software/gr-smart_meters/lib/GridStream_impl.cc:26:
/usr/include/boost/bind/bind.hpp: In instantiation of ‘struct boost::_bi::result_traits<boost::_bi::unspecified, int (gr::block::*)(int, std::vector<int>&, std::vector<const void*>&, std::vector<void*>&)>’:
/usr/include/boost/bind/bind.hpp:1284:48: required from ‘class boost::_bi::bind_t<boost::_bi::unspecified, int (gr::block::*)(int, std::vector<int>&, std::vector<const void*>&, std::vector<void*>&), boost::_bi::list2<boost::_bi::value<gr::smart_meters::GridStream_impl*>, boost::arg<1> > >’
/home/user/Software/gr-smart_meters/lib/GridStream_impl.cc:60:73: required from here
/usr/include/boost/bind/bind.hpp:75:37: error: ‘int (gr::block::*)(int, std::vector<int>&, std::vector<const void*>&, std::vector<void*>&)’ is not a class, struct, or union type
typedef typename F::result_type type;
^~~~
In file included from /usr/include/boost/function/detail/maybe_include.hpp:18:0,
from /usr/include/boost/function/detail/function_iterate.hpp:14,
from /usr/include/boost/preprocessor/iteration/detail/iter/forward1.hpp:52,
from /usr/include/boost/function.hpp:64,
from /usr/include/gnuradio/basic_block.h:34,
from /usr/include/gnuradio/block.h:27,
from /home/user/Software/gr-smart_meters/lib/../include/smart_meters/GridStream.h:25,
from /home/user/Software/gr-smart_meters/lib/GridStream_impl.h:24,
from /home/user/Software/gr-smart_meters/lib/GridStream_impl.cc:26:
/usr/include/boost/function/function_template.hpp: In instantiation of ‘static void boost::detail::function::void_function_obj_invoker1<FunctionObj, R, T0>::invoke(boost::detail::function::function_buffer&, T0) [with FunctionObj = boost::_bi::bind_t<boost::_bi::unspecified, int (gr::block::*)(int, std::vector<int>&, std::vector<const void*>&, std::vector<void*>&), boost::_bi::list2<boost::_bi::value<gr::smart_meters::GridStream_impl*>, boost::arg<1> > >; R = void; T0 = boost::shared_ptr<pmt::pmt_base>]’:
/usr/include/boost/function/function_template.hpp:925:38: required from ‘void boost::function1<R, T1>::assign_to(Functor) [with Functor = boost::_bi::bind_t<boost::_bi::unspecified, int (gr::block::*)(int, std::vector<int>&, std::vector<const void*>&, std::vector<void*>&), boost::_bi::list2<boost::_bi::value<gr::smart_meters::GridStream_impl*>, boost::arg<1> > >; R = void; T0 = boost::shared_ptr<pmt::pmt_base>]’
/usr/include/boost/function/function_template.hpp:716:7: required from ‘boost::function1<R, T1>::function1(Functor, typename boost::enable_if_c<(! boost::is_integral<Functor>::value), int>::type) [with Functor = boost::_bi::bind_t<boost::_bi::unspecified, int (gr::block::*)(int, std::vector<int>&, std::vector<const void*>&, std::vector<void*>&), boost::_bi::list2<boost::_bi::value<gr::smart_meters::GridStream_impl*>, boost::arg<1> > >; R = void; T0 = boost::shared_ptr<pmt::pmt_base>; typename boost::enable_if_c<(! boost::is_integral<Functor>::value), int>::type = int]’
/usr/include/boost/function/function_template.hpp:1061:16: required from ‘boost::function<R(T0)>::function(Functor, typename boost::enable_if_c<(! boost::is_integral<Functor>::value), int>::type) [with Functor = boost::_bi::bind_t<boost::_bi::unspecified, int (gr::block::*)(int, std::vector<int>&, std::vector<const void*>&, std::vector<void*>&), boost::_bi::list2<boost::_bi::value<gr::smart_meters::GridStream_impl*>, boost::arg<1> > >; R = void; T0 = boost::shared_ptr<pmt::pmt_base>; typename boost::enable_if_c<(! boost::is_integral<Functor>::value), int>::type = int]’
/usr/include/gnuradio/basic_block.h:392:38: required from ‘void gr::basic_block::set_msg_handler(pmt::pmt_t, T) [with T = boost::_bi::bind_t<boost::_bi::unspecified, int (gr::block::*)(int, std::vector<int>&, std::vector<const void*>&, std::vector<void*>&), boost::_bi::list2<boost::_bi::value<gr::smart_meters::GridStream_impl*>, boost::arg<1> > >; pmt::pmt_t = boost::shared_ptr<pmt::pmt_base>]’
/home/user/Software/gr-smart_meters/lib/GridStream_impl.cc:60:74: required from here
/usr/include/boost/function/function_template.hpp:159:11: error: no match for call to ‘(boost::_bi::bind_t<boost::_bi::unspecified, int (gr::block::*)(int, std::vector<int>&, std::vector<const void*>&, std::vector<void*>&), boost::_bi::list2<boost::_bi::value<gr::smart_meters::GridStream_impl*>, boost::arg<1> > >) (boost::shared_ptr<pmt::pmt_base>)’
BOOST_FUNCTION_RETURN((*f)(BOOST_FUNCTION_ARGS));
^
lib/CMakeFiles/gnuradio-smart_meters.dir/build.make:62: recipe for target 'lib/CMakeFiles/gnuradio-smart_meters.dir/GridStream_impl.cc.o' failed
make[2]: *** [lib/CMakeFiles/gnuradio-smart_meters.dir/GridStream_impl.cc.o] Error 1
CMakeFiles/Makefile2:135: recipe for target 'lib/CMakeFiles/gnuradio-smart_meters.dir/all' failed
make[1]: *** [lib/CMakeFiles/gnuradio-smart_meters.dir/all] Error 2
Makefile:140: recipe for target 'all' failed
make: *** [all] Error 2
Any help would be appreciated.
Thank you!