gaoxiang12 / slambook2

edition 2 of the slambook
MIT License
5.39k stars 2k forks source link

ch3 编译visualizeGeometry.cpp报错pangolin编译出错 #222

Open Mandylove1993 opened 2 years ago

Mandylove1993 commented 2 years ago

我在3rdparty中把pangolin的源码clone下来了,然后到ch3下进行make 就出错了,请各位帮忙看看怎么解决?

/home/zhuft/readbook/slambook2/3rdparty/Pangolin/components/pango_core/include/sigslot/signal.hpp:1504:46: error: ‘m_slots’ was not declared in this scope for (auto &group : detail::cow_write(m_slots)) { ^~~ /home/zhuft/readbook/slambook2/3rdparty/Pangolin/components/pango_core/include/sigslot/signal.hpp:1504:46: note: suggested alternative: ‘m_block’ for (auto &group : detail::cow_write(m_slots)) { ^~~ m_block /home/zhuft/readbook/slambook2/3rdparty/Pangolin/components/pango_core/include/sigslot/signal.hpp: In member function ‘void sigslot::signal_base< , >::add_slot(sigslot::signal_base< , >::slot_ptr&&)’: /home/zhuft/readbook/slambook2/3rdparty/Pangolin/components/pango_core/include/sigslot/signal.hpp:1538:42: error: ‘m_slots’ was not declared in this scope auto &groups = detail::cow_write(m_slots); ^~~ /home/zhuft/readbook/slambook2/3rdparty/Pangolin/components/pango_core/include/sigslot/signal.hpp:1538:42: note: suggested alternative: ‘m_block’ auto &groups = detail::cow_write(m_slots); ^~~ m_block /home/zhuft/readbook/slambook2/3rdparty/Pangolin/components/pango_core/include/sigslot/signal.hpp: In member function ‘size_t sigslot::signal_base< , >::disconnect_if(Cond&&)’: /home/zhuft/readbook/slambook2/3rdparty/Pangolin/components/pango_core/include/sigslot/signal.hpp:1560:42: error: ‘m_slots’ was not declared in this scope auto &groups = detail::cow_write(m_slots); ^~~ /home/zhuft/readbook/slambook2/3rdparty/Pangolin/components/pango_core/include/sigslot/signal.hpp:1560:42: note: suggested alternative: ‘m_block’ auto &groups = detail::cow_write(m_slots); ^~~ m_block /home/zhuft/readbook/slambook2/3rdparty/Pangolin/components/pango_core/include/sigslot/signal.hpp:1564:28: error: range-based ‘for’ expression of type ‘auto’ has incomplete type for (auto &group : groups) { ^~ /home/zhuft/readbook/slambook2/3rdparty/Pangolin/components/pango_core/include/sigslot/signal.hpp: In member function ‘void sigslot::signal_base< , >::clear()’: /home/zhuft/readbook/slambook2/3rdparty/Pangolin/components/pango_core/include/sigslot/signal.hpp:1584:27: error: ‘m_slots’ was not declared in this scope detail::cow_write(m_slots).clear(); ^~~ /home/zhuft/readbook/slambook2/3rdparty/Pangolin/components/pango_core/include/sigslot/signal.hpp:1584:27: note: suggested alternative: ‘m_block’ detail::cow_write(m_slots).clear(); ^~~ m_block /home/zhuft/readbook/slambook2/3rdparty/Pangolin/components/pango_core/include/sigslot/signal.hpp: In instantiation of ‘void sigslot::signal_base< , >::operator()(U&& ...) [with U = {pangolin::VarState::Event}; Lockable = std::mutex; T = {pangolin::VarState::Event}]’: /home/zhuft/readbook/slambook2/3rdparty/Pangolin/components/pango_vars/include/pangolin/var/varstate.h:264:23: required from ‘std::map<std::cxx11::basic_string, std::shared_ptr >::iterator pangolin::VarState::AddUpgradedVar(const std::shared_ptr<pangolin::VarValue >&, const iterator&, bool) [with T = bool; std::map<std::__cxx11::basic_string, std::shared_ptr >::iterator = std::_Rb_tree_iterator<std::pair<const std::cxx11::basic_string, std::shared_ptr > >]’ /home/zhuft/readbook/slambook2/3rdparty/Pangolin/components/pango_vars/include/pangolin/var/varstate.h:205:13: required from ‘std::shared_ptr pangolin::VarState::GetOrCreateVar(const T&, const pangolin::VarMeta&) [with T = bool]’ /home/zhuft/readbook/slambook2/3rdparty/Pangolin/components/pango_vars/include/pangolin/var/var.h:83:50: required from ‘pangolin::Var::Var(const T&, const pangolin::VarMeta&) [with T = bool]’ /home/zhuft/readbook/slambook2/3rdparty/Pangolin/components/pango_vars/include/pangolin/var/var.h:88:35: required from ‘pangolin::Var::Var(const string&, const T&) [with T = bool; std::cxx11::string = std::cxx11::basic_string]’ /home/zhuft/readbook/slambook2/3rdparty/Pangolin/components/pango_display/include/pangolin/display/widgets.h:153:50: required from here /home/zhuft/readbook/slambook2/3rdparty/Pangolin/components/pango_core/include/sigslot/signal.hpp:1180:65: error: ‘slots_reference’ was not declared in this scope cow_copy_type<list_type, Lockable> ref = slots_reference();


examples/CMakeFiles/plotTrajectory.dir/build.make:79: recipe for target 'examples/CMakeFiles/plotTrajectory.dir/plotTrajectory.cpp.o' failed
make[2]: *** [examples/CMakeFiles/plotTrajectory.dir/plotTrajectory.cpp.o] Error 1
CMakeFiles/Makefile2:256: recipe for target 'examples/CMakeFiles/plotTrajectory.dir/all' failed
make[1]: *** [examples/CMakeFiles/plotTrajectory.dir/all] Error 2
Makefile:100: recipe for target 'all' failed
make: *** [all] Error 2
![2022-02-15_15-18](https://user-images.githubusercontent.com/39931840/154011743-d66704a5-b2f3-49e2-97df-0af60fcd4177.png)
****
snowman-maker commented 2 years ago

解决了吗兄弟,我也是这个问题,搞了一下午了

miRemid commented 2 years ago

同样的问题,ubuntu20.04,有兄弟知道怎么解决吗?

miRemid commented 2 years ago

我已经解决了

  1. 重新完整clone项目
    git clone --recursive https://github.com/gaoxiang12/slambook2.git
  2. 安装所有依赖
    sudo apt install -y libglew-dev libpng-dev python3-dev
  3. 重新编译安装
    cd slambook2/3rdparty/Pangolin
    mkdir build && cd build
    cmake .. && make && sudo make install
  4. 编译ch3并运行

如果是使用原作者的库,需要先运行./scripts/install_prerequisites.sh --dry-run recommended安装依赖后编译安装

snowman-maker commented 2 years ago

Thanks!

从 Windows 版邮件发送

发件人: HakureiSK 发送时间: 2022年3月17日 14:10 收件人: gaoxiang12/slambook2 抄送: snowman-maker; Comment 主题: Re: [gaoxiang12/slambook2] ch3 编译visualizeGeometry.cpp报错pangolin编译出错 (Issue #222)

我已经解决了

  1. 重新完整clone项目 git clone --recursive https://github.com/gaoxiang12/slambook2.git
  2. 安装所有依赖 sudo apt install -y libglew-dev libpng-dev python3-dev
  3. 重新编译安装 cd slambook2/3rdparty/Pangolin

mkdir build && cd build

cmake .. && make && sudo make install

  1. 编译ch3并运行 — Reply to this email directly, view it on GitHub, or unsubscribe. Triage notifications on the go with GitHub Mobile for iOS or Android. You are receiving this because you commented.Message ID: @.***>
miRemid commented 2 years ago

用c++11编译

snowman-maker commented 2 years ago

如果c++11不行就换c++14,总有一个能过,安装前依赖一定要装好

miRemid commented 2 years ago

3rdparty就是啊

pfeducode commented 2 years ago

如果c++11不行就换c++14,总有一个能过,安装前依赖一定要装好

感谢回答,问题已经解决,此处的正确方法是,按照高翔老师给出的readme.txt中的命令安装Pangolin,因该不会报错,但是编译VisualizeGeometry.cpp报错,解决方式是修改ch3中的CmakeList.txt,将编译器标准由C++11改为C++14,可以正常编译,而不是修改Pangolin的CmakeList.txt,我的编译器是gcc9.4.0。

gaoxiang12 commented 2 years ago

第二版书主要在17-18年写作,很难预料到未来编译环境里的一些问题,大家可能需要多尝试尝试。