3

main.cpp に非常に単純な C++ 関数を記述しました。

#include <iostream>
using namespace std;

int SomeCalculation(float x){
    int decision = 0;
    if (x > 1){
        decision = 1;
    }
    return decision;
}

Boost.Pythonを使用して、これを共有ライブラリとしてコンパイルしようとしています。このために、decision.cpp を作成しました。

#include <boost/python.hpp>
BOOST_PYTHON_MODULE(decision)
{
    using namespace boost::python;
    def("main", main);
}

残念ながら、次のエラーが表示されます。

In file included from /usr/include/boost/python/detail/prefix.hpp:13:0,
                 from /usr/include/boost/python/args.hpp:8,
                 from /usr/include/boost/python.hpp:11,
                 from decision.cpp:1:
/usr/include/boost/python/detail/wrap_python.hpp:50:23: fatal error: pyconfig.h: File or folder does not exist.
compilation terminated.

このファイルがどこにあるのか手がかりがなかったので、単純なsudo find / -name pyconfig.h.pyconfig.h ファイルをいくつか見つけました。そのため、ファイルの最も一般的なバージョンと思われるものを、作業中のフォルダーにコピーしただけです。

cp /usr/include/python2.7/pyconfig.h /home/kram/c++/cmod/pyconfig.h

コンパイル コマンドを再度実行すると ( g++ -fPIC -g -ggdb -c decision.cpp -o decision.so)、以前と同じエラーが発生します。

この pyconfig.h 依存関係を解決する方法を知っている人はいますか?

[編集] コードの一部を追加

4

1 に答える 1

4

コマンドを試してください:

g++ -g -shared -fPIC -I/usr/include/python2.7 decision.cpp -lpython2.7 -lboost_python -o decision.so
于 2013-06-04T09:58:15.607 に答える