當前位置:成語大全網 - 書法字典 - 【python-C相互調用】python中的dict如何傳入C語言函數中。那麽作為參數呢?

【python-C相互調用】python中的dict如何傳入C語言函數中。那麽作為參數呢?

#包含?& ltstdio.h & gt

#包含?& ltstdlib.h & gt

#包含?& ltPython.h & gt

靜電?p對象?*

wmf_reverse(PyObject?*自我,?p對象?*參數,?p對象?*kwargs)?{?

靜電?char*?kwlist[]?=?{“姓名”,?NULL };

夏爾?*姓名?=?NULL

p對象?*retval?=?NULL?

//?問題1:?只取壹個字符串,格式應該是" s "

//?& gt& gt& gt?if(PyArg _ ParseTupleAndKeywords(args,keyds,“isi”,kwlist,& amp姓名))

如果?(PyArg _ ParseTupleAndKeywords(args,誇爾斯?“s”,?kwlist,?& amp姓名))?{

retval?=?(PyObject?*)Py_BuildValue("i ",1);

printf("%s\n ",姓名);

//?問題二:不放

//?& gt& gt& gt?免費(姓名);?

}?不然呢?{

retval?=?(PyObject?*)Py_BuildValue("i ",0);

}

回歸?retval

}?

靜電?PyMethodDef

wmf_methods[]?=?{

{"reverse ",(PyCFunction)wmf_reverse,?METH_VARARGS?|?METH _關鍵詞,?“反轉”},

//?問題3:方法定義表應該以空記錄結束。

{NULL,?NULL,?0,?NULL},

};

//?問題4:沒有定義模塊。

靜電?struct?PyModuleDef

wmf_module?=?{

PyModuleDef_HEAD_INIT,

“wmf”,/*?名字?的?模塊?*/

NULL,?/*?模塊?文檔?梅?是嗎?NULL?*/

-1,?/*?尺寸?的?每個口譯員?狀態?的?那個?模塊,

還是?-1?如果?那個?模塊?保持?狀態?在?全球?變量。?*/

wmf_methods,

};

//?問題5:入口函數應該聲明為:PyMODINIT_FUNC。

FUNC皮莫迪尼特

PyInit_wmf(void)?{

//?問題6: py _ initmodule是要初始化的模塊,不是方法。所以轉移法的定義是錯誤的。

//?另外,python2.x使用Py_Init_module,python3.x使用PyModule_Create。

//?兩者略有區別,自己註意。我這裏用的是python3.x。

//Py_InitModule("wmf ",extest methods);

p對象?* m;

m?=?PyModule_Createwmf _ module);

如果?(m?==?NULL)?{

回歸?NULL

}

回歸?m;

}