我正在尝试将CGAL合并到现有的模拟项目中,但是我遇到了一些链接器问题。 python模拟keiro.py在swig包装器中使用了一个名为physics.cpp的文件来加速常见操作......我设法让我的physics.cpp文件进行编译,但运行Python模拟错误时出现以下消息:< / p>
追踪(最近一次通话): 文件“keiro.py”,第2行,in 来自世界进口世界,查看 文件“/Users/marcstrauss/Desktop/keiro/world.py”,第9行,in 来自fast.physics导入Vec2d,粒子,世界作为PhysicsWorld 文件“/Users/marcstrauss/Desktop/keiro/fast/physics.py”,第7行,in import _physics ImportError:dlopen(/ Users / marcstrauss / Desktop / keiro / fast / physics.so,2):符号不是&gt;找到:_ _gmpq_clear 参考自:/Users/marcstrauss/Desktop/keiro/fast/_physics.so 预计在:平面命名空间 在/Users/marcstrauss/Desktop/keiro/fast/_physics.so
我认为在目标文件中无法识别___gmpq_clear符号的错误意味着我没有正确链接到CGAL。这是我的makefile:
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 / 清洁: rm -f physics.py rm -f graphutils.py rm -f * .cxx rm -f *〜* .pyc * .pyo rm -f * .so rm -rf build
对于我如何解决这个问题,有没有人有任何想法?谢谢!
答案 0 :(得分:6)
在我的计算机上,__gmpq_clear
符号位于libgmp库中:
nm libgmp.a | grep gmpq_clear
00000000 T __gmpq_clear
尝试将-lgmp
添加到您的链接命令。