
Hi, You are building in debug mode but your cmake config tells it to ling against the release version of OpenMesh. Can you try addind a "d" before the .dylib in your cmake file? Regards, Jan Möbius On 22.05.19 18:03, 梓欣 张 wrote:
Hi, I’m a beginner in OpenMesh so this question may seem to be funny. I’ve successfully installed OpenMesh using homebrew. But when I tried to run a simple testing program in CLion, things went wrong. Messages are like this:
const&)", referenced from: _main in main.cpp.o "OpenMesh::IO::_IOManager_::write(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, OpenMesh::IO::BaseExporter&, OpenMesh::IO::Options, long)", referenced from: bool OpenMesh::IO::write_mesh<OpenMesh::PolyMesh_ArrayKernelT<OpenMesh::DefaultTraits> (OpenMesh::PolyMesh_ArrayKernelT<OpenMesh::DefaultTraits> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, OpenMesh::IO::Options, long) in main.cpp.o "OpenMesh::BaseProperty::stats(std::basic_ostream<char, std::char_traits<char> >&) const", referenced from: vtable for OpenMesh::PropertyT<OpenMesh::DefaultTraits::EdgeT<OpenMesh::FinalMeshItemsT<OpenMesh::DefaultTraits, false>::ITraits, OpenMesh::FinalMeshItemsT<OpenMesh::DefaultTraits, false>::Refs> > in main.cpp.o vtable for OpenMesh::PropertyT<OpenMesh::DefaultTraits::HalfedgeT<OpenMesh::FinalMeshItemsT<OpenMesh::DefaultTraits, false>::ITraits, OpenMesh::FinalMeshItemsT<OpenMesh::DefaultTraits, false>::Refs> > in main.cpp.o vtable for OpenMesh::PropertyT<OpenMesh::DefaultTraits::FaceT<OpenMesh::FinalMeshItemsT<OpenMesh::DefaultTraits, false>::ITraits, OpenMesh::FinalMeshItemsT<OpenMesh::DefaultTraits, false>::Refs> > in main.cpp.o vtable for OpenMesh::PropertyT<OpenMesh::DefaultTraits::VertexT<OpenMesh::FinalMeshItemsT<OpenMesh::DefaultTraits, false>::ITraits, OpenMesh::FinalMeshItemsT<OpenMesh::DefaultTraits, false>::Refs> > in main.cpp.o vtable for OpenMesh::PropertyT<OpenMesh::VectorT<float, 3> > in
/Applications/CLion.app/Contents/bin/cmake/bin/cmake --build /Users/felix/Desktop/Learning/FillHole/FillHole/cmake-build-debug --target FillHole -- -j 4 Scanning dependencies of target FillHole [ 50%] Building CXX object CMakeFiles/FillHole.dir/main.cpp.o [100%] Linking CXX executable FillHole Undefined symbols for architecture x86_64: "OpenMesh::PolyConnectivity::add_face(std::vector<OpenMesh::VertexHandle, std::allocator<OpenMesh::VertexHandle> main.cpp.o ld: symbol(s) not found for architecture x86_64 collect2: error: ld returned 1 exit status make[3]: *** [FillHole] Error 1 make[2]: *** [CMakeFiles/FillHole.dir/all] Error 2 make[1]: *** [CMakeFiles/FillHole.dir/rule] Error 2 make: *** [FillHole] Error 2
I think I’ve written my CMakeLists.txt correctly, so how can this happen? Here is my CMakeLists.txt:
cmake_minimum_required(VERSION 3.9) project(FillHole)
set(CMAKE_CXX_STANDARD 11)
set(OpenMesh_FILE /usr/local/Cellar/open-mesh/7.1) INCLUDE_DIRECTORIES(${OpenMesh_FILE}/include) link_directories(${OpenMesh_FILE}/lib)
add_executable(FillHole main.cpp)
target_link_libraries(FillHole libOpenMeshCore.7.1.dylib libOpenMeshTools.7.1.dylib)
And here is my program:
#include <iostream> // -------------------- OpenMesh #include<unistd.h> #include <OpenMesh/Core/IO/MeshIO.hh> #include <OpenMesh/Core/Mesh/PolyMesh_ArrayKernelT.hh> // ---------------------------------------------------------------------------- typedef OpenMesh::PolyMesh_ArrayKernelT<> MyMesh; // ---------------------------------------------------------------------------- // Build a simple cube and write it to std::cout
int main() { MyMesh mesh; // generate vertices MyMesh::VertexHandle vhandle[8]; vhandle[0] = mesh.add_vertex(MyMesh::Point(-1, -1, 1)); vhandle[1] = mesh.add_vertex(MyMesh::Point( 1, -1, 1)); vhandle[2] = mesh.add_vertex(MyMesh::Point( 1, 1, 1)); vhandle[3] = mesh.add_vertex(MyMesh::Point(-1, 1, 1)); vhandle[4] = mesh.add_vertex(MyMesh::Point(-1, -1, -1)); vhandle[5] = mesh.add_vertex(MyMesh::Point( 1, -1, -1)); vhandle[6] = mesh.add_vertex(MyMesh::Point( 1, 1, -1)); vhandle[7] = mesh.add_vertex(MyMesh::Point(-1, 1, -1)); // generate (quadrilateral) faces std::vector<MyMesh::VertexHandle> face_vhandles; face_vhandles.clear(); face_vhandles.push_back(vhandle[0]); face_vhandles.push_back(vhandle[1]); face_vhandles.push_back(vhandle[2]); face_vhandles.push_back(vhandle[3]); mesh.add_face(face_vhandles);
face_vhandles.clear(); face_vhandles.push_back(vhandle[7]); face_vhandles.push_back(vhandle[6]); face_vhandles.push_back(vhandle[5]); face_vhandles.push_back(vhandle[4]); mesh.add_face(face_vhandles); face_vhandles.clear(); face_vhandles.push_back(vhandle[1]); face_vhandles.push_back(vhandle[0]); face_vhandles.push_back(vhandle[4]); face_vhandles.push_back(vhandle[5]); mesh.add_face(face_vhandles); face_vhandles.clear(); face_vhandles.push_back(vhandle[2]); face_vhandles.push_back(vhandle[1]); face_vhandles.push_back(vhandle[5]); face_vhandles.push_back(vhandle[6]); mesh.add_face(face_vhandles); face_vhandles.clear(); face_vhandles.push_back(vhandle[3]); face_vhandles.push_back(vhandle[2]); face_vhandles.push_back(vhandle[6]); face_vhandles.push_back(vhandle[7]); mesh.add_face(face_vhandles); face_vhandles.clear(); face_vhandles.push_back(vhandle[0]); face_vhandles.push_back(vhandle[3]); face_vhandles.push_back(vhandle[7]); face_vhandles.push_back(vhandle[4]); mesh.add_face(face_vhandles); OpenMesh::IO::write_mesh(mesh, "output.off"); // write mesh to output.obj try { if ( !OpenMesh::IO::write_mesh(mesh, "output.off") ) { std::cerr << "Cannot write mesh to file 'output.off'" << std::endl; return 1; } } catch( std::exception& x ) { std::cerr << x.what() << std::endl; return 1; } std::cout << "nice"<<std::endl; return 0; }
Can you help me find where the problem is? Thank you very much!
_______________________________________________ OpenMesh mailing list -- openmesh@lists.rwth-aachen.de To unsubscribe send an email to openmesh-leave@lists.rwth-aachen.de https://lists.rwth-aachen.de/postorius/lists/openmesh.lists.rwth-aachen.de
-- Jan Möbius Department of Computer Science VIII Aachen University of Technology (RWTH) Ahornstrasse 55, 52074 Aachen, Germany Phone ++49 (0)241 80-21802 Fax ++49 (0)241 80-22899 mailto:moebius@cs.rwth-aachen.de http://www.rwth-graphics.de