Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

C++ language error while compiling src/turtlebot3_simulations/turtlebot3_gazebo/src/turtlebot3_drive.cpp #183

Open
2catycm opened this issue Mar 13, 2022 · 1 comment

Comments

@2catycm
Copy link

2catycm commented Mar 13, 2022

What happens?

[ 98%] Building CXX object turtlebot3_simulations/turtlebot3_gazebo/CMakeFiles/turtlebot3_drive.dir/src/turtlebot3_drive.cpp.o
In file included from /mnt/c/opt/ros/foxy/x64/include/log4cxx/helpers/class.h:28,
                 from /mnt/c/opt/ros/foxy/x64/include/log4cxx/helpers/object.h:22,
                 from /mnt/c/opt/ros/foxy/x64/include/log4cxx/helpers/objectimpl.h:21,
                 from /mnt/c/opt/ros/foxy/x64/include/log4cxx/level.h:24,
                 from /opt/ros/noetic/include/ros/console.h:46,
                 from /opt/ros/noetic/include/ros/ros.h:40,
                 from /mnt/d/EnglishStandardPath/Practice_File/P_Intelligent_Robotics/lab4_ws/src/turtlebot3_simulations/turtlebot3_gazebo/include/turtlebot3_gazebo/turtlebot3_drive.h:22,
                 from /mnt/d/EnglishStandardPath/Practice_File/P_Intelligent_Robotics/lab4_ws/src/turtlebot3_simulations/turtlebot3_gazebo/src/turtlebot3_drive.cpp:19:
/mnt/c/opt/ros/foxy/x64/include/log4cxx/helpers/objectptr.h:42:30: error: expected initializer before ‘ObjectPtrBase’
   42 |         class LOG4CXX_EXPORT ObjectPtrBase {
      |                              ^~~~~~~~~~~~~
/mnt/c/opt/ros/foxy/x64/include/log4cxx/helpers/objectptr.h:54:9: error: expected class-name before ‘{’ token
   54 |         {
      |         ^
/mnt/c/opt/ros/foxy/x64/include/log4cxx/helpers/objectptr.h:82:25: error: ‘ObjectPtrBase’ does not name a type; did you mean ‘ObjectPtrT’?
   82 |        ObjectPtrT(const ObjectPtrBase& p1)
      |                         ^~~~~~~~~~~~~
      |                         ObjectPtrT
/mnt/c/opt/ros/foxy/x64/include/log4cxx/helpers/objectptr.h:82:8: error: ‘log4cxx::helpers::ObjectPtrT<T>::ObjectPtrT(const int&)’ cannot be overloaded with ‘log4cxx::helpers::ObjectPtrT<T>::ObjectPtrT(const int&)’
   82 |        ObjectPtrT(const ObjectPtrBase& p1)
      |        ^~~~~~~~~~
/mnt/c/opt/ros/foxy/x64/include/log4cxx/helpers/objectptr.h:56:10: note: previous declaration ‘log4cxx::helpers::ObjectPtrT<T>::ObjectPtrT(const int&)’
   56 |          ObjectPtrT(const int& null)
      |          ^~~~~~~~~~
/mnt/c/opt/ros/foxy/x64/include/log4cxx/helpers/objectptr.h:89:32: error: expected ‘)’ before ‘&’ token
   89 |        ObjectPtrT(ObjectPtrBase& p1)
      |                  ~             ^
      |                                )
/mnt/c/opt/ros/foxy/x64/include/log4cxx/helpers/objectptr.h:141:29: error: declaration of ‘operator=’ as non-function
  141 |       ObjectPtrT& operator=(ObjectPtrBase& p1) {
      |                             ^~~~~~~~~~~~~
/mnt/c/opt/ros/foxy/x64/include/log4cxx/helpers/objectptr.h:141:27: error: expected ‘;’ at end of member declaration
  141 |       ObjectPtrT& operator=(ObjectPtrBase& p1) {
      |                           ^
      |                            ;
/mnt/c/opt/ros/foxy/x64/include/log4cxx/helpers/objectptr.h:141:42: error: expected ‘)’ before ‘&’ token
  141 |       ObjectPtrT& operator=(ObjectPtrBase& p1) {
      |                            ~             ^
      |                                          )
/mnt/c/opt/ros/foxy/x64/include/log4cxx/helpers/objectptr.h:146:35: error: ‘ObjectPtrBase’ does not name a type; did you mean ‘ObjectPtrT’?
  146 |       ObjectPtrT& operator=(const ObjectPtrBase& p1) {
      |                                   ^~~~~~~~~~~~~
      |                                   ObjectPtrT
/mnt/c/opt/ros/foxy/x64/include/log4cxx/helpers/objectptr.h:146:19: error: ‘log4cxx::helpers::ObjectPtrT<T>& log4cxx::helpers::ObjectPtrT<T>::operator=(const int&)’ cannot be overloaded with ‘log4cxx::helpers::ObjectPtrT<T>& log4cxx::helpers::ObjectPtrT<T>::operator=(const int&)’
  146 |       ObjectPtrT& operator=(const ObjectPtrBase& p1) {
      |                   ^~~~~~~~
/mnt/c/opt/ros/foxy/x64/include/log4cxx/helpers/objectptr.h:116:22: note: previous declaration ‘log4cxx::helpers::ObjectPtrT<T>& log4cxx::helpers::ObjectPtrT<T>::operator=(const int&)’
  116 |          ObjectPtrT& operator=(const int& null) //throw(IllegalArgumentException)
      |                      ^~~~~~~~
/mnt/c/opt/ros/foxy/x64/include/log4cxx/helpers/objectptr.h: In constructor ‘log4cxx::helpers::ObjectPtrT<T>::ObjectPtrT(const int&)’:
/mnt/c/opt/ros/foxy/x64/include/log4cxx/helpers/objectptr.h:58:17: error: ‘ObjectPtrBase’ has not been declared
   58 |                 ObjectPtrBase::checkNull(null);
      |                 ^~~~~~~~~~~~~
/mnt/c/opt/ros/foxy/x64/include/log4cxx/helpers/objectptr.h: In constructor ‘log4cxx::helpers::ObjectPtrT<T>::ObjectPtrT(const int&)’:
/mnt/c/opt/ros/foxy/x64/include/log4cxx/helpers/objectptr.h:83:11: error: request for member ‘cast’ in ‘p1’, which is of non-class type ‘const int’
   83 |           _LOG4CXX_OBJECTPTR_INIT(reinterpret_cast<T*>(p1.cast(T::getStaticClass())))
      |           ^~~~~~~~~~~~~~~~~~~~~~~
/mnt/c/opt/ros/foxy/x64/include/log4cxx/helpers/objectptr.h: In member function ‘log4cxx::helpers::ObjectPtrT<T>& log4cxx::helpers::ObjectPtrT<T>::operator=(const int&)’:
/mnt/c/opt/ros/foxy/x64/include/log4cxx/helpers/objectptr.h:121:17: error: ‘ObjectPtrBase’ has not been declared
  121 |                 ObjectPtrBase::checkNull(null);
      |                 ^~~~~~~~~~~~~
/mnt/c/opt/ros/foxy/x64/include/log4cxx/helpers/objectptr.h: In member function ‘log4cxx::helpers::ObjectPtrT<T>& log4cxx::helpers::ObjectPtrT<T>::operator=(const int&)’:
/mnt/c/opt/ros/foxy/x64/include/log4cxx/helpers/objectptr.h:147:46: error: request for member ‘cast’ in ‘p1’, which is of non-class type ‘const int’
  147 |          T* newPtr = reinterpret_cast<T*>(p1.cast(T::getStaticClass()));
      |                                              ^~~~
/mnt/c/opt/ros/foxy/x64/include/log4cxx/helpers/objectptr.h: In member function ‘T* log4cxx::helpers::ObjectPtrT<T>::exchange(const T*)’:
/mnt/c/opt/ros/foxy/x64/include/log4cxx/helpers/objectptr.h:172:37: error: ‘ObjectPtrBase’ has not been declared
  172 |              return static_cast<T*>(ObjectPtrBase::exchange(
      |                                     ^~~~~~~~~~~~~
In file included from /mnt/c/opt/ros/foxy/x64/include/log4cxx/helpers/object.h:22,
                 from /mnt/c/opt/ros/foxy/x64/include/log4cxx/helpers/objectimpl.h:21,
                 from /mnt/c/opt/ros/foxy/x64/include/log4cxx/level.h:24,
                 from /opt/ros/noetic/include/ros/console.h:46,
                 from /opt/ros/noetic/include/ros/ros.h:40,
                 from /mnt/d/EnglishStandardPath/Practice_File/P_Intelligent_Robotics/lab4_ws/src/turtlebot3_simulations/turtlebot3_gazebo/include/turtlebot3_gazebo/turtlebot3_drive.h:22,
                 from /mnt/d/EnglishStandardPath/Practice_File/P_Intelligent_Robotics/lab4_ws/src/turtlebot3_simulations/turtlebot3_gazebo/src/turtlebot3_drive.cpp:19:
/mnt/c/opt/ros/foxy/x64/include/log4cxx/helpers/class.h: At global scope:
/mnt/c/opt/ros/foxy/x64/include/log4cxx/helpers/class.h:39:38: error: expected initializer before ‘Class’
   39 |                 class LOG4CXX_EXPORT Class
      |                                      ^~~~~
In file included from /mnt/c/opt/ros/foxy/x64/include/log4cxx/helpers/object.h:24,
                 from /mnt/c/opt/ros/foxy/x64/include/log4cxx/helpers/objectimpl.h:21,
                 from /mnt/c/opt/ros/foxy/x64/include/log4cxx/level.h:24,
                 from /opt/ros/noetic/include/ros/console.h:46,
                 from /opt/ros/noetic/include/ros/ros.h:40,
                 from /mnt/d/EnglishStandardPath/Practice_File/P_Intelligent_Robotics/lab4_ws/src/turtlebot3_simulations/turtlebot3_gazebo/include/turtlebot3_gazebo/turtlebot3_drive.h:22,
                 from /mnt/d/EnglishStandardPath/Practice_File/P_Intelligent_Robotics/lab4_ws/src/turtlebot3_simulations/turtlebot3_gazebo/src/turtlebot3_drive.cpp:19:
/mnt/c/opt/ros/foxy/x64/include/log4cxx/helpers/classregistration.h:28:38: error: expected initializer before ‘ClassRegistration’
   28 |                 class LOG4CXX_EXPORT ClassRegistration
      |                                      ^~~~~~~~~~~~~~~~~
In file included from /mnt/c/opt/ros/foxy/x64/include/log4cxx/helpers/objectimpl.h:21,
                 from /mnt/c/opt/ros/foxy/x64/include/log4cxx/level.h:24,
                 from /opt/ros/noetic/include/ros/console.h:46,
                 from /opt/ros/noetic/include/ros/ros.h:40,
                 from /mnt/d/EnglishStandardPath/Practice_File/P_Intelligent_Robotics/lab4_ws/src/turtlebot3_simulations/turtlebot3_gazebo/include/turtlebot3_gazebo/turtlebot3_drive.h:22,
                 from /mnt/d/EnglishStandardPath/Practice_File/P_Intelligent_Robotics/lab4_ws/src/turtlebot3_simulations/turtlebot3_gazebo/src/turtlebot3_drive.cpp:19:
/mnt/c/opt/ros/foxy/x64/include/log4cxx/helpers/object.h:102:38: error: expected initializer before ‘Object’
  102 |                 class LOG4CXX_EXPORT Object
      |                                      ^~~~~~
In file included from /mnt/c/opt/ros/foxy/x64/include/log4cxx/level.h:24,
                 from /opt/ros/noetic/include/ros/console.h:46,
                 from /opt/ros/noetic/include/ros/ros.h:40,
                 from /mnt/d/EnglishStandardPath/Practice_File/P_Intelligent_Robotics/lab4_ws/src/turtlebot3_simulations/turtlebot3_gazebo/include/turtlebot3_gazebo/turtlebot3_drive.h:22,
                 from /mnt/d/EnglishStandardPath/Practice_File/P_Intelligent_Robotics/lab4_ws/src/turtlebot3_simulations/turtlebot3_gazebo/src/turtlebot3_drive.cpp:19:
/mnt/c/opt/ros/foxy/x64/include/log4cxx/helpers/objectimpl.h:28:28: error: expected initializer before ‘ObjectImpl’
   28 |       class LOG4CXX_EXPORT ObjectImpl : public virtual Object
      |                            ^~~~~~~~~~
In file included from /opt/ros/noetic/include/ros/console.h:46,
                 from /opt/ros/noetic/include/ros/ros.h:40,
                 from /mnt/d/EnglishStandardPath/Practice_File/P_Intelligent_Robotics/lab4_ws/src/turtlebot3_simulations/turtlebot3_gazebo/include/turtlebot3_gazebo/turtlebot3_drive.h:22,
                 from /mnt/d/EnglishStandardPath/Practice_File/P_Intelligent_Robotics/lab4_ws/src/turtlebot3_simulations/turtlebot3_gazebo/src/turtlebot3_drive.cpp:19:
/mnt/c/opt/ros/foxy/x64/include/log4cxx/level.h:42:30: error: expected initializer before ‘Level’
   42 |         class LOG4CXX_EXPORT Level : public helpers::ObjectImpl
      |                              ^~~~~
In file included from /mnt/c/opt/ros/foxy/x64/include/boost/bind.hpp:30,
                 from /opt/ros/noetic/include/ros/publisher.h:35,
                 from /opt/ros/noetic/include/ros/node_handle.h:32,
                 from /opt/ros/noetic/include/ros/ros.h:45,
                 from /mnt/d/EnglishStandardPath/Practice_File/P_Intelligent_Robotics/lab4_ws/src/turtlebot3_simulations/turtlebot3_gazebo/include/turtlebot3_gazebo/turtlebot3_drive.h:22,
                 from /mnt/d/EnglishStandardPath/Practice_File/P_Intelligent_Robotics/lab4_ws/src/turtlebot3_simulations/turtlebot3_gazebo/src/turtlebot3_drive.cpp:19:
/mnt/c/opt/ros/foxy/x64/include/boost/bind.hpp:36:1: note: #pragma message: The practice of declaring the Bind placeholders (_1, _2, ...) in the global namespace is deprecated. Please use <boost/bind/bind.hpp> + using namespace boost::placeholders, or define BOOST_BIND_GLOBAL_PLACEHOLDERS to retain the current behavior.
   36 | BOOST_PRAGMA_MESSAGE(
      | ^~~~~~~~~~~~~~~~~~~~
make[2]: *** [turtlebot3_simulations/turtlebot3_gazebo/CMakeFiles/turtlebot3_drive.dir/build.make:63: turtlebot3_simulations/turtlebot3_gazebo/CMakeFiles/turtlebot3_drive.dir/src/turtlebot3_drive.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:4365: turtlebot3_simulations/turtlebot3_gazebo/CMakeFiles/turtlebot3_drive.dir/all] Error 2
make: *** [Makefile:141: all] Error 2
Invoking "make -j16 -l16" failed

How to reproduce

  • in a catkin workspace' s src, I did the following:
git clone https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git 
git clone https://github.com/ROBOTIS-GIT/turtlebot3.git 
git clone https://github.com/ROBOTIS-GIT/turtlebot3_simulations.git 
cd .. && catkin_make

ROS env

ROS_VERSION=1
ROS_PYTHON_VERSION=3
ROS_PACKAGE_PATH=/mnt/d/EnglishStandardPath/Practice_File/P_Intelligent_Robotics/lab4_ws/src:/opt/ros/noetic/share
ROSLISP_PACKAGE_DIRECTORIES=/mnt/d/EnglishStandardPath/Practice_File/P_Intelligent_Robotics/lab4_ws/devel/share/common-lisp
ROS_ETC_DIR=/opt/ros/noetic/etc/ros
ROS_MASTER_URI=http://localhost:11311
ROS_ROOT=/opt/ros/noetic/share/ros
ROS_DISTRO=noetic

OS env

  • Windows 11

  • wsl2 core

Linux DESKTOP-SPT1P3R 5.10.60.1-microsoft-standard-WSL2 #1 SMP Wed Aug 25 23:20:18 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux

@2catycm
Copy link
Author

2catycm commented Mar 13, 2022

As you can see in the error message, a ros2 foxy is installed on windows but not wsl in C:/opt/ros/foxy by using chocolatey. Bash in wsl does not source the devel/setup.bat, but it seems that CMake in wsl is trying to use the log4cxx contained in foxy.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant