2016-09-21 4 views
0

私はPyDSTool packageを動的システムの解析に使用するpython2.7で構築された複雑なプロジェクトに属しています。 PyDSToolは、ソースがC/C++個のファイルでコード化されている方程式のシステムを統合するために使用したい2つのCベースのインテグレータ(RadauとDopri)を提供しています。-std = C++ 11のGCCは、(PyDSTool経由で)C++ヘッダーファイルを表示しません

私はパッケージにはほとんど制御を持っている、と私は、積分器をインスタンス化するとき、私は、コンパイラの検索パスに含めるなどし*.Hファイル、ソースファイル(*.C*.CPPに)ヘッダを追加し、ディレクトリを渡すことができますリンク先のライブラリ。

コードの一貫した部分はC++11に基づいているので、私はコンパイラにも引数-std=C++11を渡しています。

結局、順番にコマンドをdistutilsからbuild_extを実行/PyDSTool/Generators/mixins.py打ち上げsetupコマンド(ライン185)は、上記のすべてのフラグが付加されています。明確にするために

:私は追加していますフラグは以下のとおりです。

compile options: '-I/usr/lib64/python2.7/site-packages/numpy/core/include -I/home/maurizio/Dropbox/StabilityAnalysis_tmp -I/usr/local/pydstool/PyDSTool/integrator -I/usr/include/python2_7 -I/usr/include/numpy -I/home/maurizio/Dropbox/Ongoing_Projects/pycustommodules -I/home/maurizio/Dropbox/Ongoing_Projects/c_libraries -I/home/maurizio/Dropbox/Ongoing_Projects/c_libraries/models -I/home/maurizio/Dropbox/Ongoing_Projects/DePitta_PNAS/Software/Stability_Analysis/ -I/usr/lib64/python2.7/site-packages/numpy/core/include -I/usr/include/python2.7 -c' 
extra options: '-std=c++11 -w -Wno-return-type -Wall -lpython2.7 -lm -lgsl -lgslcblas -D__DOPRI__' 

結果のコンパイルコマンドPyDSToolによって発行されたとして読み取ります

一度自動的に生成 build.logファイルに探して
error: Command "gcc -pthread -fno-strict-aliasing -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv -DNDEBUG -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv -fPIC -I/usr/lib64/python2.7/site-packages/numpy/core/include -I/home/maurizio/Dropbox/StabilityAnalysis_tmp -I/usr/local/pydstool/PyDSTool/integrator -I/usr/include/python2_7 -I/usr/include/numpy -I/home/maurizio/Dropbox/Ongoing_Projects/pycustommodules -I/home/maurizio/Dropbox/Ongoing_Projects/c_libraries -I/home/maurizio/Dropbox/Ongoing_Projects/c_libraries/models -I/home/maurizio/Dropbox/Ongoing_Projects/DePitta_PNAS/Software/Stability_Analysis/ -I/usr/lib64/python2.7/site-packages/numpy/core/include -I/usr/include/python2.7 -c /home/maurizio/Dropbox/StabilityAnalysis_tmp/dop853_temp/ei_network_vf.c -o /home/maurizio/Dropbox/StabilityAnalysis_tmp/dop853_temp/home/maurizio/Dropbox/StabilityAnalysis_tmp/dop853_temp/ei_network_vf.o -std=c++11 -w -Wno-return-type -Wall -lpython2.7 -lm -lgsl -lgslcblas -D__DOPRI__" failed with exit status 1 

PyDSToolによって、終了ステータスは、コンパイラが私のコードで使用されるいくつかのルーチン/ libsにあるC++ライブラリを見ないという事実に起因することが分かります。私はpythonで、または同じコンパイルし、上記の貼り付け、余分なオプションを持つscipy.weaveて、スタンドアロンとしての私のコードをコンパイルする場合ので

/usr/include/blitz/blitz.h:45:18: fatal error: string: No such file or directory 
#include <string> 
       ^
Compilation Terminated 

さて、それは、私のコードの問題ではありません、それは動作します。インテグレータ内でコードを作成するのは、PyDSToolの問題です。私はdistutilsとすべてgccのオプションでは実用的ではないので、私はいくつかの洞察力を私に提供できるいくつかの専門家がここにいることを望む。私はいくつかのオプションやコンパイラに渡すものがないことが実際には疑わしいです。

+0

ソースファイルは '.c'で終わり、' gcc'は通常はCコンパイラの呼び出しですが、 'blitz.h'はC++のみのヘッダのようです。それは何であるはずですか? C++の場合、呼び出しは 'g ++'と終了 '.cpp'でなければなりません。 'build_ext'がC++をサポートするかどうかはわかりません。 – user4407569

+0

@Eichhörnchen良い点。私は 'PyDSTool'が' .C'ファイルを生成しているという事実を忘れていました。実際、コード内の拡張子を置き換えることは、まだコンパイルされませんが、少し前進しているようです。 – maurizio

答えて

1

完全性のためです。上記で指摘した問題には、簡単な回避策はありません。 PyDSToolCベースのインテグレータ(RadauおよびDopri)は、C++の方程式のソースコードではコンパイルできませんが、Cのみです。したがって、コードをCで再作成するか、PyDSToolインテグレータを編集してC++に再作成してください。第1の選択肢は現在可能な唯一の可能性が高い(少なくとも非専門家には誰が書いているかのように)。

関連する問題