によって渡される引数(複数可)でPythonの関数を呼び出します。最終結果は、Python関数が引数に対して行うことが元のC変数に保存されることです。テストするにはPythonのCのAPI:私はCでのpythonモジュールを書いていると私はそれが「参照」によって渡される引数の一つでPythonの関数を呼び出す持っている必要があります参照
int *resume; // this int is actually passed in to this body of code
PyObject *resumeInt; // which was originally a C callback func for libnids, but
PyObject *ret; // I removed/rewrote most of this code for clarity
resumeInt = Py_BuildValue("i",-1);
ret = PyObject_CallFunction(tcpResumeFunc, "(O)", resumeInt);
*resume = PyInt_AsLong(resumeInt);
Py_DECREF(ret);
Py_DECREF(resumeInt);
、私は= 5にtcpResumeFuncが渡された整数を変更表しPythonの機能を持っていた私は、このコードの末尾に*履歴書をプリントアウトすると、しかし、それはそれは初期だ保持値-1 。私は、APIの仕組みについて誤解していることを知っています。助言がありますか?
私は* resumeInt以来と呼ばれるPython関数によって修正され、私は新しい* resumeIntが残されることになるPyObject_CallFunctionにそれを通過した後、同じオブジェクトを参照することを想定し(と思う)、ということを理解します。それからPyInt_AsLongでC変数に変換し直します。そのアイデアに何か問題はありますか?あなたの提案はもう少しエレガントで簡単に聞こえますが、私はこれを理解したいと思います。 –
ああ、あなたの編集後、それは理にかなっています。だから私がやっていることはおそらく不可能だろう。値を返すようにコードを修正します。私は投票するだろうが、十分な評判はない。素晴らしい答えですが、ありがとう! –