Я пишу модуль CPython, который использует (оборачивает) внешнюю библиотеку C ++, я написал setup.py
содержащий:
from distutils.core import setup, Extension
# define the extension module
my_ext = Extension("_my_ext",
sources=["src/my_ext.cpp"],
include_dirs=["src/include"],
extra_link_args=["-fPIC"],
language="c++",
libraries=["~/path/to/external/lib/xxx.so"],
extra_objects=["~/path/to/external/lib/xxx.so"])
# run the setup
setup(ext_modules=[my_ext])
Расширение успешно скомпилировано:
$ python setup.py build_ext --include-dirs=~/path/to/external/lib1/:~/path/to/external/lib2/
running build_ext
Но при импорте модуль выдает следующую ошибку:
$ » python -c "import _my_ext"Traceback (most recent call last):
File "<string>", line 1, in <module>
ImportError: ./_my_ext.so: undefined symbol:
_ZN10my_lib6system16my_lib_functionEPKc
Я думаю, что в процессе связывания, верно?
Задача ещё не решена.