C++調用python過程筆記

此文是學習筆記,供日後翻閱。
下面列出C++訪問python所需的函數,按調用的先後次序排列。
提示: 其中實例化類的方法是python3中的,若要使用python2,則用PyInstance_New這個方法。有關此方法網上有很多資料,就不列出了。

//PyInitialize: 必須首先調用,初始化python運行所需模塊。它無參數、無返回值
void Py_Initialize();

/*Py_IsInitialized: 檢查初始化是否成功
返回值: 成功返回true/
bool Py_IsInitialized();

/*PyImport_ImportModule: 加載python模塊
*szModuleName: 模塊名稱
返回值: 成功加載返回模塊指針/
PyObject *PyImport_ImportModule(const char *szModuleName);

/*PyModule_GetDict: 獲取模塊字典
*pModule: 模塊指針
返回值: 成功從指定模塊獲取字典返回字典指針/
PyObject *PyModule_GetDict(PyObject *pModule);

/*PyDict_GetItemString: 從模塊字典中獲取指定的對象
*pDict: 被查找的模塊字典指針
*key: 要查找的模塊中的函數或類名
返回值: 若找到指定的對象,返回指向它的指針;否則返回NULL/
PyObject *PyDict_GetItemString(PyObject *pDict, const char *key);

/*PyInstanceMethod_New: 實例化從模塊字典中查找到的類
*pClass: 從模塊字典中找到的類信息指針
返回值: 根據類信息指針構造該類的實例,並返回它的指針/
PyObject *PyInstanceMethod_New(PyObject *pClass);

/*PyObject_CallMethod: 調用類方法
*pInstance: 由PyInstanceMethod_New返回的類實例
*pMethodName: 被調用的類方法名
*pFormat: 傳遞給類方法的參數類型格式字符串
*…: 傳給類方法的參數
返回值: 被調用類方法的返回值。若被調用方法無返回值,則本方法返回NULL/
PyObject *PyObject_CallMethod(PyObject *pInstance, const char *pMethodName, const char *pFormat, …);

/*PyObject_CallFunction: 調用模塊中的函數
*pFunction: 從模塊字典中獲取的模塊函數指針
*pFormat: 要傳給模塊函數的參數類型格式化字符串
*…: 傳給模塊函數的參數列表
返回值: 模塊函數的返回值;若模塊函數無返回值,該方法返回NULL/
PyObject *PyObject_CallFunction(PyObject *pFunction, const char *pFormat, …);

/*PyArg_Parse: 從python返回的數據對象中獲取指定的數據
*pArgs: 調用python方法得到的返回值
*pFormat: 指定獲取什麼類型數據的格式化字符串
…: 存儲獲取數據的指針/
PyArg_Parse(PyObject *pArgs, const char *pFormat, …);

//下面這個宏釋放python api創建的對象,如模塊,模塊字典,函數,類和類實例等等
Py_DECREF(pObject);

//最後調用此方法釋放python模塊
Py_Finalize();

原文鏈接:https://blog.csdn.net/love_clc/article/details/76653100

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章