3

C でPython拡張機能を作成する際に、いくつかのことをテストしようとしていますがPyObject*、 C から s を構築できないことに気付きましたint。ここに、問題を示すコンパイル可能なコード スニペットがあります ( #include <Python.h>Mac でない場合は、必要になる場合があります)。

#include <Python/Python.h>
int main(){
    PyObject* obj = Py_BuildValue("i", 42);
    return 0;
}

しかし、これはSegmentation fault: 11. Xcode の LLDB に基づいて、呼び出し時に何か問題があるように見えPyInt_FromLongます。

同じことをしようとしますが、を使用するdoubleと、

PyObject* obj = Py_BuildValue("d", 42.0);

それはうまく機能します...オンラインで何も見つけることができず、アイデアがありません-助けていただければ幸いです。

4

1 に答える 1

4

Python を C プログラムに埋め込もうとしている場合は、最初に Python をPy_Initialize()で初期化する必要があり、完了したら呼び出す必要がありPy_Finalize()ます。

これを試して...

#include <Python/Python.h>

int main()
{
    Py_Initialize();
    PyObject* obj = Py_BuildValue("i", 42);
    Py_Finalize();
    return 0;
}

...その他の例については、埋め込みドキュメントをご覧ください。

于 2013-04-28T10:06:13.470 に答える