SIPを使用してPython/Cバインディングを正常にコンパイルした後、Python /C++でも同じことを実行したいと思いました。何らかの理由でこれは機能しません。
ファイルは次のとおりです。
fib.cpp
#include "fib.h"
int fib1(int n)
{
if (n <= 0) {
return 0;
} else if (n <= 2) {
return 1;
} else {
return fib1(n-1) + fib1(n-2);
}
}
fib.h
int fib1(int n);
fib.sip
%Module fib
%Include fib.h
次のコマンドを実行して、中間ファイルを作成します。
sip -c . fib.sip
これまでのところすべてが機能します。
次に、distutilsを使用して.pydファイルを作成します。
setup.py
from distutils.core import setup, Extension
import sipdistutils
setup(
name = 'fib',
versione = '1.0',
ext_modules=[
Extension("fib", ["fib.sip", "fib.cpp"]),
],
cmdclass = {'build_ext': sipdistutils.build_ext}
)
次のコマンドを実行します。
python setup.py build
これは次のエラーで失敗します。
build\temp.win32-2.7\Release\sipfibcmodule.cpp:29:29: error: 'fib1' was not declared in this scope
error: command 'gcc' failed with exit status 1
問題は何でしょうか?ちなみに、gccの代わりにc ++をコンパイラとして使用するべきではありませんか?
助けていただければ幸いです。
敬具
デビッド