1

#include <boost/python.hpp>C ++コードを挿入して、libboostライブラリを使用してコードをコンパイルしようとしています。誰かがこれを実行するための正しいコマンド、特にライブラリを含めてリンクするのを手伝ってくれませんか。私はこれでかなり基本的です。

使用されたコマンド(ただし機能していません):

g++ try.cpp -L /usr/lib/libboost_python.so -o try

編集:

テストされたコード:

#include <boost/python.hpp>
#include <iostream>

int main() 
{

    std::cout << "Yes, it works :-)" << std::endl;

    return 0;
}

エラーメッセージ:

from try.cpp:1:
/usr/include/boost/python/enum.hpp:31: error: expected ‘;’ before ‘*’ token
/usr/include/boost/python/enum.hpp:32: error: expected ‘;’ before ‘(’ token
/usr/include/boost/python/enum.hpp:33: error: ‘PyObject’ has not been declared
/usr/include/boost/python/enum.hpp:52: error: expected constructor, destructor, or     type conversion before ‘*’ token
/usr/include/boost/python/enum.hpp:67: error: ‘void*       boost::python::enum_<T>::convertible_from_python’ is not a static member of ‘struct     boost::python::enum_<T>’
/usr/include/boost/python/enum.hpp:67: error: template definition of non-template ‘    void* boost::python::enum_<T>::convertible_from_python’
/usr/include/boost/python/enum.hpp:67: error: ‘PyObject’ was not declared in this     scope
/usr/include/boost/python/enum.hpp:67: error: ‘obj’ was not declared in this scope
    /usr/include/boost/python/enum.hpp:80: error: variable or field ‘construct’     declared void 
/usr/include/boost/python/enum.hpp:80: error: ‘PyObject’ was not declared in this     scope
/usr/include/boost/python/enum.hpp:80: error: ‘obj’ was not declared in this scope
/usr/include/boost/python/enum.hpp:80: error: expected primary-expression before ‘*’ token
/usr/include/boost/python/enum.hpp:80: error: ‘data’ was not declared in this scope

もう1つは、コンパイルするg++ -Wall thread_one.cpp -o thread_one -lboost_threadと、boost_threadライブラリを使用するために機能することです。

4

2 に答える 2

1

これを試して:

g++ try.cpp -o try -lboost_python

コンパイラの呼び出しにも追加するのが良いスタイルです-W -Wall -Wextra -pedantic(次のSOの質問をより具体的にすることができます:-))。また、-O2または-O3最適化のために、特にBoostを使用する場合は、おそらく非常に良いアイデアです。最後に、ビルドを別々のステージに分割すると、複数のファイルがある場合に再コンパイルが速くなります。

g++ -c -o try.o try.cpp -W -Wall -Wextra -pedantic -O2
g++ -o try try.o -s -lboost_python
于 2012-07-15T11:50:25.963 に答える
1

最後に、それは機能しています。使用するコマンドは次のとおりです。

g++ -I/usr/include/python2.6 try.cpp -o try -lboost_python -lpython2.6

于 2012-07-16T13:14:39.203 に答える