2010-11-03 5 views
1

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

Traceback (most recent call last): File "keiro.py", line 2, in from world import World, View File "/Users/marcstrauss/Desktop/keiro/world.py", line 9, in from fast.physics import Vec2d, Particle, World as PhysicsWorld File "/Users/marcstrauss/Desktop/keiro/fast/physics.py", line 7, in import _physics ImportError: dlopen(/Users/marcstrauss/Desktop/keiro/fast/physics.so, 2): Symbol not >found: __gmpq_clear Referenced from: /Users/marcstrauss/Desktop/keiro/fast/_physics.so Expected in: flat namespace in /Users/marcstrauss/Desktop/keiro/fast/_physics.so

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

all: physics.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/

physics.py physics_wrap.cxx: physics.i physics.h swig -python -c++ physics.i

graphutils.py graphutils_wrap.cxx: graphutils.i graphutils.h swig -python -c++ graphutils.i -I/opt/local/include/ clean: rm -f physics.py rm -f graphutils.py rm -f *.cxx rm -f *~ *.pyc *.pyo rm -f *.so rm -rf build

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

+0

Был ли ответ исправить вашу проблему? У меня есть подобные проблемы на данный момент? – Endophage

+0

Да, так и было. По крайней мере для меня. Я использую Xcode 4 под Mac OS X Lion. Я установил CGAL с помощью MacPorts. –

ответ

6

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

nm libgmp.a | grep gmpq_clear 
00000000 T __gmpq_clear 

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

+0

Спасибо, помощник. Это сработало. :) –