SWIG ImportError: неопределенный символ: _Py_RefTotal - PullRequest
2 голосов
/ 14 августа 2010

Я действительно новичок в SWIG. Я попытался скомпилировать пример, приведенный в SWIG, но я получаю следующую ошибку:

$ python
Python 2.6.5 (r265:79063, Apr 16 2010, 13:09:56) 
[GCC 4.4.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import example
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "example.py", line 25, in <module>
    _example = swig_import_helper()
  File "example.py", line 21, in swig_import_helper
    _mod = imp.load_module('_example', fp, pathname, description)
ImportError: ./_example.so: undefined symbol: _Py_RefTotal

Ответы [ 2 ]

3 голосов
/ 27 октября 2010

У меня была похожая проблема, и Google отправил меня сюда - я думал, что опубликую свое решение.

Для меня компилятор запутался в том, использовать ли c или c ++.

Поскольку я намереваюсь написать c ++, я последовал примеру, но использовал опцию swing -c ++ и использовал g ++ вместо gcc в качестве компилятора.

Однако мой инструмент для сборки (boost.build или bjam) видел «example.c» и компилировал с

g ++ -xc -O2 -fPIC -c example.c

Флаг "-xc" указывает код c, который включен в bjam из-за расширения файла example.c.Это привело к тому, что ссылки на квакали аналогично запросу справки.

Я изменил имя «example.c» на «example.cpp» (который удаляет флаги -xc при использовании bjam) исвязывание затем продолжилось нормально.

Мне понадобилось немного времени, чтобы определить это, так что, возможно, я сэкономлю кому-то 30 минут в один день.

0 голосов
/ 06 января 2017

Вы забыли добавить -lpython2.6 в свой оператор компоновщика.

...