Найти - Пользователи
Полная версия: swig + python
Начало » Python для экспертов » swig + python
1
severum
пытаюсь по примеру сделать работающий модуль для функции fact.
вроде все как надо, но постоянно получаю в основном такую ошибку
example_wrap.obj : error LNK2019: unresolved external symbol “int __cdecl fact(int)” (?fact@@YAHH@Z) referenced in function __wrap_fact example.dll : fatal error LNK1120: 1 unresolved externals

файлы такие.

/* File: example.c */
#include “example.h”

int fact(int n) {
if (n < 0){ /* This should probably return an error, but this is simpler */
return 0;
}
if (n == 0) {
return 1;
}
else {
/* testing for overflow would be a good idea here */
return n * fact(n-1);
}
}



/* File: example.h */
int fact(int n);




/* File: example.i */
%module example

%{
#define SWIG_FILE_WITH_INIT
#include “example.h”
%}

int fact(int n);


#SConstruct
import sys
import os

include = Dir('C:\Python25\include')
libs = Dir('C:\Python25\libs')

env = Environment(platform = ‘win32’, CPPPATH = include, LIBPATH=libs, ENV = {'PATH' : os.environ})

dll = env.SharedLibrary(
target = ‘example’,
source = ,
SWIGFLAGS='-python -c++ -module example'
)


пробовал делать по шагам
и получившиеся файлы
example.c
example_wrap.cc
example.h
просто собрать в проект VS71
соотвествтвенно ошибка таже самая.
Если переименовать файл example_wrap.cc в example_wrap.c
то ошибки становяться другие
d:\MicrosoftVisualStudio71\Vc7\include\cstddef(17) : error C2143: syntax error : missing ‘{’ before ‘:’
d:\MicrosoftVisualStudio71\Vc7\include\cstddef(17) : error C2059: syntax error : ‘:’
d:\MicrosoftVisualStudio71\Vc7\include\cstddef(17) : error C2143: syntax error : missing ‘{’ before ‘:’
d:\MicrosoftVisualStudio71\Vc7\include\cstddef(17) : error C2059: syntax error : ‘:’
d:\MicrosoftVisualStudio71\Vc7\include\eh.h(32) : fatal error C1189: #error : “eh.h is only for C++!”
опять же не знаю почему..

Подскажите в чем проблема.
Спасибо
Андрей Светлов
использовать SWIGFLAGS='-python -c -module example' как флаги если у тебя С, а не С++ код.
А еще лучше не использовать SWIG - гадость.
severum
спасибо. я чтото проглядел.
а чем пользоваться?
boost? PyCXX?
Андрей Светлов
boost - однозначно. И настоятельно рекомендую посмотреть на PY++ для генерирования оберток - сильно экономит время.
Еще камрад bialix утверждает, что для простых случаев pyrex весьма хорош.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB