Доброго времени суток! Помогите пожалуйста решить одну (или две
проблему.
Вобщем откопал такую штуку, как swig, вроде бы неплохая вещь, но возникли некоторые трудности. Делаю всё, как в туториале на swig.org, ошибок никаких нет, но вот не могу обратиться к объявленой в сишном коде переменной и описаной там структуре. Функции при этом работают нормально.
Файл example.cxx:
/* File : example.c */
typedef struct V {
double x,y,z;
} v;
int add(int a, int b) {
return (a + b);
}
example.i:
/* example.i */
%module example
%{
/* Put header files here or function declarations like below */
#define SWIG_FILE_WITH_INIT
extern int add(int a, int b);
extern struct v;
%}
extern struct v;
int add(int a, int b);
swig -c++ -python example.i \
&& g++ -fPIC -c example.cxx \
&& g++ -fPIC -c example_wrap.cxx -I/usr/local/include/python2.5 \
&& g++ -shared example.o example_wrap.o -o _example.so
Получаем:
swig -c++ -python example.i && g++ -fPIC -c example.cxx && g++ -fPIC -c example_wrap.cxx -I/usr/local/include/python2.5 && g++ -shared example.o example_wrap.o -o _example.so
example_wrap.cxx:2601: error: a storage class can only be specified for objects and functions
*** Error code 1
Если убрать "extern" в "extern struct v;" — то питон ругается:
>>> example.v()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'module' object has no attribute 'v'
Куда дальше копать — не знаю. Помогите, плиз...