処理のためにPythonスクリプトに送る必要があるC++マップがあります。私はそれをPyDictに入れて送信するべきだと考えました。問題の私のスクリプトは、出力がPyDictオブジェクトをC++からPythonに送る方法
seting item succeeded
From python script
☺
そうではなく、印刷され、正しく
私のC++
#include <Python.h>
#include <string>
int main(int argc, char *argv[]) {
Py_Initialize();
PyObject *import, *attr, *instance, *methodcall, *arg, *tuple;
PySys_SetPath("./py/");
import = PyImport_ImportModule("class_test");
attr = PyObject_GetAttrString(import, "TestMap");
arg = PyString_FromString("arg from first");
tuple = PyTuple_Pack(1, arg);
instance = PyInstance_New(attr, tuple, NULL);
PyObject *d = PyDict_New();
PyDict_SetItemString(d, "k", PyInt_FromLong(3000)) ? printf("seting item failed\n") : printf("seting item succeeded\n");
methodcall = PyObject_CallMethod(instance, "hello", "s", d);
Py_DECREF(instance);
Py_Finalize();
return 0;
}
と私のシンプルなスクリプト
class TestMap(CLBase):
def __init__(self, c):
self.c = c
pass
def hello(self, s):
print "From python script"
print s
それを受信しないこと辞書のようなものスマイリーの顔をプリントする
私は他のライブラリを使用すると、引数がchar*
ですが、それはだということを言っている"s"
で