Я пытаюсь написать расширение C ++ для Python, которое включает в себя Python C API. Согласно моему предыдущему опыту работы с Visual Studio, мне просто нужно включить заголовочные файлы python и связать статические библиотеки python, и все будет работать нормально.
Однако я не мог сделать это на OS X Mavericks сейчас. Я установил отдельный Python 3.4.2 из python.org и добавил запись включения в мою конфигурацию Cmake:include_directories("/Library/Frameworks/Python.framework/Versions/3.4/Headers")
Тогда я понятия не имею, как поступить со статической частью библиотеки. В Windows они хранятся в %python_root%/libs
и вы можете найти .lib
файлы там. Но на OS X я не смог найти такой каталог, в котором .a
статические библиотеки размещены.
Я пробовал несколько решений, таких как прикрепление результата python-config --lib
компилировать варианты и set(CMAKE_BUILD_TYPE Release)
в то время как все они закончили со следующей ошибкой:
Undefined symbols for architecture x86_64:
"_PyLong_FromLong", referenced from:
test() in Main.cpp.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Я старался distutils
также, но, похоже, он тоже не работал должным образом 🙁
Вы получаете ошибку компоновщика, библиотека не была добавлена к вашим параметрам ссылки.
В моей системе OSX 10.8.5 статическая библиотека находится в каталоге ниже:
Вам нужно добавить каталог в путь к вашей библиотеке cmake и добавить саму библиотеку python. (В GCC вы используете опции -L и -l).
Directory: /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/config/
file: libpython2.7.a