raisimTech / raisimOgre

Other
26 stars 21 forks source link

ImportError: .cpython-36m-x86_64-linux-gnu.so: undefined symbol: #16

Closed MusubaPy closed 3 years ago

MusubaPy commented 3 years ago

Hello again Jemin

Faced the problem:

Traceback (most recent call last):
  File "runner.py", line 2, in <module>
    from raisimGymTorch.env.bin import rsg_a1
ImportError: /raisim_workspace/raisimLib/raisimGymTorch/raisimGymTorch/env/bin/rsg_a1.cpython-36m-x86_64-linux-gnu.so: undefined symbol: _ZN6raisim7OgreVis12singletonPtrE

I have seen other issues, but they are not applicable in my situation. I only have python 3.6 in docker and only use that. Also tested other python versions (3.7 and 3.8) with a complete docker reinstall.

I can't even imagine possible solutions to the problem. Thanks in advance for your patience.

jhwangbo commented 3 years ago

How do you link raisimOgre? The error message means that your executable is not linked to raisimOgre

MusubaPy commented 3 years ago

When I call:

python3 setup.py develop --CMAKE_PREFIX_PATH $LOCAL_BUILD

I get:

running develop
running egg_info
writing raisim_gym_torch.egg-info/PKG-INFO
writing dependency_links to raisim_gym_torch.egg-info/dependency_links.txt
writing requirements to raisim_gym_torch.egg-info/requires.txt
writing top-level names to raisim_gym_torch.egg-info/top_level.txt
adding license file 'LICENSE' (matched pattern 'LICEN[CS]E*')
reading manifest file 'raisim_gym_torch.egg-info/SOURCES.txt'
writing manifest file 'raisim_gym_torch.egg-info/SOURCES.txt'
running build_ext
-- pybind11 v2.4.3
-- raisim:
--   Version: 1.0.0
--   Includes: /raisim_build/include
--   Libraries: raisim::raisimPng;raisim::raisimODE;raisim::raisimMine;raisim::raisim
-- Found OGRE
--   static     : OFF
--   components : Bites;HLMS;MeshLodGenerator;Overlay;Paging;Property;RTShaderSystem;Terrain;Volume
--   plugins    : Plugin_BSPSceneManager;Plugin_OctreeSceneManager;Plugin_PCZSceneManager;Plugin_ParticleFX;RenderSystem_GL;RenderSystem_GL3Plus;Codec_STBI;Codec_FreeImage
--   media      : /raisim_build/share/OGRE/Media
-- raisimOgre:
--   Version: 0.7.0
--   Includes: /raisim_build/include
--   Libraries: OgreMain;OgreBites;OgreRTShaderSystem;OgreMeshLodGenerator;raisim::assimp;raisim::raisim;pthread;zzip;SDL2
-- raisim:
--   Version: 1.0.0
--   Includes: /raisim_build/include
--   Libraries: raisim::raisimPng;raisim::raisimODE;raisim::raisimMine;raisim::raisim
-- Configuring done
-- Generating done
-- Build files have been written to: /raisim_workspace/raisimLib/raisimGymTorch/build/temp.linux-x86_64-3.6

Presumably the link to raisimOgre works fine. But when you call runner.py, you still get an error. I am using the default CMakeList.txt file

MusubaPy commented 3 years ago

I solved the problem by replacing the line in CMakeLists.txt in the raisimGymTorch folder: It was: target_link_libraries(${subdir} PRIVATE raisim::raisim ${Dependencies}) Became: target_link_libraries(${subdir} PRIVATE raisim::raisimOgre raisim::raisim ${Dependencies})

jhwangbo commented 3 years ago

I was just checking what is going on. I tried the old ogre-based raisimGym repo and it still works fine

https://github.com/leggedrobotics/raisimGym