Я пытаюсь скомпилировать минимальный пример оболочки Python для некоторого кода C ++ с SWIG в OSX.
/* File : example.c */
double My_variable = 3.0;
int fact(int n) {
if (n <= 1) return 1;
else return n*fact(n-1);
}
int my_mod(int x, int y) {
return (x%y);
}
и файл интерфейса:
/* example.i */
%module example
%{
/* Put header files here or function declarations like below */
extern int fact(int n);
extern int my_mod(int x, int y);
%}
extern int fact(int n);
extern int my_mod(int x, int y);
Я запускаюследующее:
swig -python -o example_wrap.c example.i
gcc -c -arch x86_64 -fPIC example.cxx -o example.o -I/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7
ld -bundle -macosx_version_min 10.13 -flat_namespace -undefined suppress -o _example.so *.o
Все это правильно создает _example.so, example_wrap.c, example.o и example.py.Затем я запускаю python2.7
import example
и получаю
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "example.py", line 17, in <module>
_example = swig_import_helper()
File "example.py", line 16, in swig_import_helper
return importlib.import_module('_example')
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/importlib/__init__.py", line 37, in import_module
__import__(name)
ImportError: dynamic module does not define init function (init_example)
Есть идеи?