python嵌入c代码_怎样把Python代码嵌入到C程序
匿名用戶
1級
2017-11-03 回答
這篇文章主要介紹了將Python代碼嵌入C++程序進行編寫的實例,盡管通常還是Python代碼中調用C++程序的情況較多...需要的朋友可以參考下
把python嵌入的C++里面需要做一些步驟
安裝python程序,這樣才能使用python的頭文件和庫
在我們寫的源文件中增加“Python.h”頭文件,并且鏈入“python**.lib”庫(還沒搞清楚這個庫時靜態庫還是導出庫,需要搞清楚)
掌握和了解一些python的C語言api,以便在我們的c++程序中使用
常用的一些C API函數
在了解下面的函數之前有必要了解一下**PyObject***指針,python里面幾乎所有的對象都是使用這個指針來指示的。
Py_Initialize()&&Py_Finalize()
在調用任何python的c函數之前需要調用的函數,“Py_Initialize”是用來初始化python模塊的,推測是加載初始化加載dll的。對應的在使用python模塊之后用“Py_Finalize”來釋放模塊。
PyImport_ImportModule()
用來載入一個python模塊,這個模塊就是一般的python文件。這里需要注意的是,在加載這個模塊的時候會執行模塊里面所有可以執行的語句。包括import導入語句和在函數體之外的所有語句
PyObject_GetAttrString()
返回模塊里面的函數
Py_BuildValue()
建立一個參數元組,一般都是用這個函數來建立元組,然后將這個元組作為參數傳遞給python里面的函數。
PyEval_CallObject()
調用函數,并把“Py_BuildValue”建立的元組作為參數傳遞給被調用的函數
源碼實例
下面的實例是在c++代碼中調用Python的函數,傳遞參數并且獲取返回值
test.cpp代碼
[cpp]?view plain?copy
#include?
#include?
using?namespace?std;
int?main(int?argc,?char*?argv[])
{
Py_Initialize();??//初始化
PyObject*?pModule?=?NULL;
PyObject*?pFunc?=?NULL;
PyObject*?pParam?=?NULL;
PyObject*?pResult?=?NULL;
const?char*?pBuffer?=?NULL;
int?iBufferSize?=?0;
pModule?=?PyImport_ImportModule(“test_python");
if?(!pModule)
{
cout?<
exit?(0);
}
pFunc?=?PyObject_GetAttrString(pModule,?"main");
if?(!pFunc)
{
cout?<
cout?<
exit?(0);
}
pParam?=?Py_BuildValue("(s)",?"HEHEHE");
pResult?=?PyEval_CallObject(pFunc,pParam);
if(pResult)
{
if(PyArg_Parse(pResult,?"(si)",?&pBuffer,?iBufferSize))
{
cout?<
cout?<
}
}
Py_DECREF(pParam);
Py_DECREF(pFunc);
Py_Finalize();
//cout?<
return?0;
}
test_python.py代碼
[py]?view plain?copy
def?main(szString):
return?("hello",?5)
總結
以上是生活随笔為你收集整理的python嵌入c代码_怎样把Python代码嵌入到C程序的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: DNF里物驱怎么加点.?
- 下一篇: python 课程设计 夏敏捷_Pyth