EPFL-LGG / ElasticKnots

Codebase for the SIGGRAPH 2023 paper Computational Exploration of Multistable Elastic Knots
MIT License
7 stars 5 forks source link

[Compile Error]: Multiple definition of "exactinit, orient3d, incircle" while linking #1

Open OkifuZ opened 11 months ago

OkifuZ commented 11 months ago

ninja build error message:

[400/401] Linking CXX shared module /home/siyan/codebase/ElasticKnots/python/elastic_knots.cpython-39-x86_64-linux-gnu.so
FAILED: /home/siyan/codebase/ElasticKnots/python/elastic_knots.cpython-39-x86_64-linux-gnu.so 
: && /usr/bin/c++ -fPIC -Wall -Wextra -pedantic -Wno-comment -O3  -flto -shared  -o /home/siyan/codebase/ElasticKnots/python/elastic_knots.cpython-39-x86_64-linux-gnu.so python_bindings/CMakeFiles/elastic_knots.dir/elastic_knots.cc.o  -Wl,-rpath,/home/siyan/codebase/ElasticKnots/build/3rdparty/ElasticRods/3rdparty/MeshFEM/src/lib/MeshFEM:/usr/local/lib  3rdparty/ElasticRods/libElasticRods.a  libElasticKnots.a  3rdparty/ElasticRods/libElasticRods.a  3rdparty/ElasticRods/3rdparty/MeshFEM/src/lib/MeshFEM/libMeshFEM.so  3rdparty/ElasticRods/3rdparty/MeshFEM/triangle/libtriangle.a  3rdparty/ElasticRods/3rdparty/MeshFEM/libmeshfem_tinyexpr.a  /usr/local/lib/libumfpack.so  /usr/local/lib/libcholmod.so  /usr/local/lib/libcolamd.so  /usr/local/lib/libamd.so  /usr/local/lib/libcamd.so  /usr/local/lib/libccolamd.so  /usr/lib/x86_64-linux-gnu/libboost_filesystem.so.1.74.0  /usr/lib/x86_64-linux-gnu/libboost_system.so.1.74.0  /usr/lib/x86_64-linux-gnu/libboost_program_options.so.1.74.0  3rdparty/ElasticRods/3rdparty/visvalingam_simplify/src/libVisvalingamSimplify.a  3rdparty/ipc-toolkit/libipc_toolkit.a  3rdparty/Tight-Inclusion/libtight_inclusion.a  lib/libpredicates.a  _deps/sweep_and_tiniest_queue-build/libSTQ_CPU.a  gnu_11.4_cxx11_64_relwithassert/libtbb.a  -ldl  _deps/spdlog-build/libspdlog.a  _deps/abseil-build/absl/hash/libabsl_hash.a  _deps/abseil-build/absl/hash/libabsl_city.a  _deps/abseil-build/absl/strings/libabsl_strings.a  _deps/abseil-build/absl/base/libabsl_throw_delegate.a  _deps/abseil-build/absl/strings/libabsl_strings_internal.a  _deps/abseil-build/absl/types/libabsl_bad_optional_access.a  _deps/abseil-build/absl/types/libabsl_bad_variant_access.a  _deps/abseil-build/absl/hash/libabsl_low_level_hash.a  _deps/abseil-build/absl/base/libabsl_base.a  _deps/abseil-build/absl/base/libabsl_raw_logging_internal.a  _deps/abseil-build/absl/base/libabsl_log_severity.a  _deps/abseil-build/absl/base/libabsl_spinlock_wait.a  -lrt  _deps/abseil-build/absl/numeric/libabsl_int128.a && cd /home/siyan/codebase/ElasticKnots/build/python_bindings && /usr/bin/strip /home/siyan/codebase/ElasticKnots/python/elastic_knots.cpython-39-x86_64-linux-gnu.so
**/usr/bin/ld: lib/libpredicates.a(predicates.c.o): in function `exactinit':
predicates.c:(.text+0xc7e0): multiple definition of `exactinit'; 3rdparty/ElasticRods/3rdparty/MeshFEM/triangle/libtriangle.a(triangle.c.o):triangle.c:(.text+0x17a0): first defined here
/usr/bin/ld: lib/libpredicates.a(predicates.c.o): in function `orient3d':
predicates.c:(.text+0xcaf0): multiple definition of `orient3d'; 3rdparty/ElasticRods/3rdparty/MeshFEM/triangle/libtriangle.a(triangle.c.o):triangle.c:(.text+0xad90): first defined here
/usr/bin/ld: lib/libpredicates.a(predicates.c.o): in function `incircle':
predicates.c:(.text+0xcc90): multiple definition of `incircle';** 3rdparty/ElasticRods/3rdparty/MeshFEM/triangle/libtriangle.a(triangle.c.o):triangle.c:(.text+0x70d0): first defined here
lto-wrapper: warning: using serial compilation of 9 LTRANS jobs
collect2: error: ld returned 1 exit status

It seems that these functions(exactinit, orient3d, incircle) both occur in predicates.h of libigl and MeshFEM/3rdparty/traingle/triangle.c.

However, I have succeeded compling deps ElasticRods, which implies this error was caused by ipc-toolkit dep(which use igl::predicates).

Tried some modification but none of them works, many thx if any possible solution exists.

harshjn commented 1 month ago

I have the exact same issue. Did you try something that worked out, like using a different version of the packages?

harshjn commented 1 month ago

It seems that this is a linker problem in cmake. https://gitlab.kitware.com/cmake/cmake/-/issues/25297

MicheleVidulis commented 2 weeks ago

Hi,

The setup.py script implements a patch to work around the overlapping definitions. Have you already tried installing by running python setup.py?