首頁 >後端開發 >C++ >如何將Python方法整合到C/C中並檢索其返回值?

如何將Python方法整合到C/C中並檢索其返回值?

Patricia Arquette
Patricia Arquette原創
2024-11-27 21:32:10473瀏覽

How Can I Integrate Python Methods into C/C   and Retrieve Their Return Values?

將Python 方法整合到C/C 程式中並擷取回傳值

本題重點介紹在C 程式碼中呼叫自訂Python 函數並捕獲其返回值返回值。給定的範例使用 PyRun_SimpleString 來呼叫函數,但這種方法有其限制。

為了有效地將 Python 方法整合到 C 中,利用 C-API 提供的方法至關重要。這是逐步指南:

  1. 匯入 Python 模組: 首先使用 PyString_FromString 和 PyImport_Import 匯入目標 Python 模組。
PyObject* myModuleString = PyString_FromString((char*)"mytest");
PyObject* myModule = PyImport_Import(myModuleString);
  1. 取得函數參考: 使用 PyObject_GetAttrString 辨識模組中所需的函數。
PyObject* myFunction = PyObject_GetAttrString(myModule,(char*)"myabs");
  1. 建立函數參數: 使用 PyTuple_Pack 將任何必要的參數準備為元組。例如,要傳遞雙精確度值,請使用 PyFloat_FromDouble。
PyObject* args = PyTuple_Pack(1,PyFloat_FromDouble(2.0));
  1. 呼叫函數並取得結果: 使用 PyObject_CallObject 執行函數並將結果儲存在 PyObject 中指標。
PyObject* myResult = PyObject_CallObject(myFunction, args)
  1. 將結果轉換為本機 C 型別: 最後,使用適當的轉換函數將結果轉換為所需的本機 C 型別。
double result = PyFloat_AsDouble(myResult);

請記得透過檢查 C-API 函數的回傳值來適當處理錯誤。透過執行以下步驟,您可以有效地從 C/C 呼叫 Python 方法並無縫檢索其傳回值。

以上是如何將Python方法整合到C/C中並檢索其返回值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn