Ошибка компоновщика CGAL - символ не найден: ___gmpq_clear - PullRequest
1 голос
/ 03 ноября 2010

Я пытаюсь включить CGAL в существующий проект симуляции, но у меня возникли проблемы с компоновщиком. Для ускорения общих операций в python-симуляторе keiro.py для ускорения выполнения обычных операций используется файл с названием phys.cpp ... Мне удалось собрать свой файл Physics.cpp для компиляции, но я выполнил ошибки моделирования Python со следующим сообщением:

Traceback (последний вызов был последним): Файл "keiro.py", строка 2, в из мира импорта World, View Файл "/Users/marcstrauss/Desktop/keiro/world.py", строка 9, в из fast.physics импортировать Vec2d, Particle, World как PhysicsWorld Файл "/Users/marcstrauss/Desktop/keiro/fast/physics.py", строка 7, в импортировать _physics Ошибка импорта: dlopen (/Users/marcstrauss/Desktop/keiro/fast/physics.so, 2): символ не> найден: _ _gmpq_clear Ссылка на: /Users/marcstrauss/Desktop/keiro/fast/_physics.so Ожидается в: плоское пространство имен в /Users/marcstrauss/Desktop/keiro/fast/_physics.so

Я полагаю, что ошибка, связанная с тем, что символ ___gmpq_clear не распознается в объектном файле, означает, что я неправильно связываюсь с CGAL. Вот мой make-файл:

все: phys.py _physics.so graphutils.py _graphutils.so

_physics.so: setup_physics.py Physics_wrap.cxx Physics.cpp python setup_physics.py build_ext --inplace -I / opt / local / include /

_graphutils.so: setup_graphutils.py graphutils_wrap.cxx graphutils.cpp python setup_graphutils.py build_ext --inplace -I / opt / local / include /

физика.py физика_wrap.cxx: физика.и физ.х swig -python -c ++ физика.i

graphutils.py graphutils_wrap.cxx: graphutils.i graphutils.h swig -python -c ++ graphutils.i -I / opt / local / include / чистить: рм -ф физика.py rm -f graphutils.py rm -f * .cxx rm -f * ~ * .pyc * .pyo rm -f * .so rm -rf build

У кого-нибудь есть идеи, как это исправить? Спасибо!

1 Ответ

6 голосов
/ 03 ноября 2010

На моем компьютере символ __gmpq_clear находится в библиотеке libgmp:

nm libgmp.a | grep gmpq_clear
00000000 T __gmpq_clear

Попробуйте добавить -lgmp к вашей команде связывания.

...