Ultimaker / libSavitar

libSavitar is a c++ implementation of 3mf loading with SIP python bindings.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Build failed on macOS 10.12.4 + Homebrew

uframer opened this issue · comments

The error messages are:

jiaoyedeMacBookPro:build jiaoye$ make
Scanning dependencies of target pugixml
[  5%] Building CXX object pugixml/CMakeFiles/pugixml.dir/src/pugixml.cpp.o
[ 10%] Linking CXX static library libpugixml.a
[ 10%] Built target pugixml
Scanning dependencies of target Savitar
[ 15%] Building CXX object CMakeFiles/Savitar.dir/src/ThreeMFParser.cpp.o
[ 21%] Building CXX object CMakeFiles/Savitar.dir/src/SceneNode.cpp.o
[ 26%] Building CXX object CMakeFiles/Savitar.dir/src/Scene.cpp.o
[ 31%] Building CXX object CMakeFiles/Savitar.dir/src/MeshData.cpp.o
[ 36%] Building CXX object CMakeFiles/Savitar.dir/src/Vertex.cpp.o
[ 42%] Building CXX object CMakeFiles/Savitar.dir/src/Face.cpp.o
[ 47%] Linking CXX shared library libSavitar.dylib
Undefined symbols for architecture x86_64:
  "_PyBytes_AsString", referenced from:
      Savitar::MeshData::setVerticesFromBytes(_object*) in MeshData.cpp.o
      Savitar::MeshData::setFacesFromBytes(_object*) in MeshData.cpp.o
  "_PyBytes_FromStringAndSize", referenced from:
      Savitar::MeshData::getVerticesAsBytes() in MeshData.cpp.o
      Savitar::MeshData::getFlatVerticesAsBytes() in MeshData.cpp.o
      Savitar::MeshData::getFacesAsBytes() in MeshData.cpp.o
  "_PyBytes_Size", referenced from:
      Savitar::MeshData::setVerticesFromBytes(_object*) in MeshData.cpp.o
      Savitar::MeshData::setFacesFromBytes(_object*) in MeshData.cpp.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [libSavitar.0.1.0.dylib] Error 1
make[1]: *** [CMakeFiles/Savitar.dir/all] Error 2
make: *** [all] Error 

My python3 is installed via Homebrew.

Are you compiling this using the same compiler as your Python installation is compiled with?

@Ghostkeeper I'm on a trip, so I have to check it tomorrow.

commented

I have the same after running 'make' in the build directory:
make Scanning dependencies of target pugixml [ 5%] Building CXX object pugixml/CMakeFiles/pugixml.dir/src/pugixml.cpp.o [ 10%] Linking CXX static library libpugixml.a [ 10%] Built target pugixml Scanning dependencies of target Savitar [ 15%] Building CXX object CMakeFiles/Savitar.dir/src/ThreeMFParser.cpp.o [ 21%] Building CXX object CMakeFiles/Savitar.dir/src/SceneNode.cpp.o [ 26%] Building CXX object CMakeFiles/Savitar.dir/src/Scene.cpp.o [ 31%] Building CXX object CMakeFiles/Savitar.dir/src/MeshData.cpp.o [ 36%] Building CXX object CMakeFiles/Savitar.dir/src/Vertex.cpp.o [ 42%] Building CXX object CMakeFiles/Savitar.dir/src/Face.cpp.o [ 47%] Linking CXX shared library libSavitar.dylib Undefined symbols for architecture x86_64: "_PyBytes_AsString", referenced from: Savitar::MeshData::setVerticesFromBytes(_object*) in MeshData.cpp.o Savitar::MeshData::setFacesFromBytes(_object*) in MeshData.cpp.o "_PyBytes_FromStringAndSize", referenced from: Savitar::MeshData::getVerticesAsBytes() in MeshData.cpp.o Savitar::MeshData::getFlatVerticesAsBytes() in MeshData.cpp.o Savitar::MeshData::getFacesAsBytes() in MeshData.cpp.o "_PyBytes_Size", referenced from: Savitar::MeshData::setVerticesFromBytes(_object*) in MeshData.cpp.o Savitar::MeshData::setFacesFromBytes(_object*) in MeshData.cpp.o ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation) make[2]: *** [libSavitar.0.1.0.dylib] Error 1 make[1]: *** [CMakeFiles/Savitar.dir/all] Error 2 make: *** [all] Error 2
on macOs 10.12.4 with 'command line Cura' running fine.

This is caused by a wrong version of certain libraries, as can be seen from " Undefined symbols for architecture x86_64: "_PyBytes_AsString", referenced from: "

If #3 is accepted and merged, this shouldn't be a problem any more.

@uframer @Appesteijn Can you give the current master branch a try?

The C++ library should now build without error. If it still fails on the SIP (Python) parts, please post the output.

Closing this since that PR was accepted ages ago.