Я использую Swig. (Mac OS 10.13)
Мой сценарий оболочки:
swig -c++ -python -o example_wrap.cpp example.i
g++ -c -std=c++17 -fPIC example.cpp
g++ -c -std=c++17 -fPIC example_wrap.cpp -o example_wrap.o \
-I/usr/local/Cellar//python/3.7.2_2/Frameworks/Python.framework/Versions/3.7/include/python3.7m
ld -bundle -macosx_version_min 10.13 -flat_namespace \
-undefined suppress -o _example.so *.o
Я потратил достаточно времени, чтобы искать, как создать динамическую библиотеку C ++ для Python, но я никогдаиспользуется последняя строка. Чаще всего я создаю библиотеку из IDE.g++ -shared
более знакомо, но не работает.Появляется много таких ошибок:
Undefined symbols for architecture x86_64:
"_PyArg_ParseTuple", referenced from:
_wrap_printTree(_object*, _object*) in example_wrap.o
Я знаю об этих методах из Python.h.Итак, вопросы - как работает последняя строка (ld -bundle ...
)?Существуют ли другие способы создания динамической библиотеки? Как я могу использовать g++ -shared
?