VS調用python方法

一、  安裝python3.7python

二、  Vs2010中配置python:函數

三、添加頭文件:#include <Python.h>ui

四、問題:error LNK2001: 沒法解析的外部符號 __imp__Py_Initialize@0spa

緣由: 因爲Python版本和項目編譯版本不匹配致使這個問題,本文出錯的緣由是3d

解決: 1. 使用 Python x86版本,VS項目更改成Win32,包含目錄及庫目錄一概爲Python x86,可正常編譯指針

       2. 使用 Python x64版本,經過配置管理器,在活動解決方案平臺中新建X64平臺,包含目錄及庫目錄一概爲Python x64,可正常編譯orm

 

五、問題:error MSB6006:"CL.exe"已退出,代碼爲5

解決:在更改VC++目錄時,改每一個目錄要注意把下面的「從父級或項目默認設置繼承」勾選上。對象

 

VS調用python經常使用接口:blog

void Py_Initialize(void)繼承

初始化Python解釋器,若是初始化失敗,繼續下面的調用會出現各類錯誤,惋惜的是此函數沒有返回值來判斷是否初始化成功,若是失敗會致使致命錯誤。

 

int Py_IsInitialized(void)

檢查是否已經進行了初始化,若是返回0,表示沒有進行過初始化。

 

void Py_Finalize()

反初始化Python解釋器,包括子解釋器,調用此函數同時會釋放Python解釋器所佔用的資源。

 

int PyRun_SimpleString(const char *command)

其實是一個宏,執行一段Python代碼。

 

PyObject* PyImport_ImportModule(char *name)

導入一個Python模塊,參數name能夠是*.py文件的文件名。相似Python內建函數import。

 

PyObject* PyModule_GetDict( PyObject *module)

至關於Python模塊對象的dict屬性,獲得模塊名稱空間下的字典對象。

 

PyObject* PyRun_String(const char* str, int start,PyObject* globals, PyObject* locals)

執行一段Python代碼。

 

int PyArg_Parse(PyObject* args, char* format, …)

把Python數據類型解析爲C的類型,這樣C程序中才可使用Python裏面的數據。

 

PyObject* PyObject_GetAttrString(PyObject *o, char*attr_name)

返回模塊對象o中的attr_name 屬性或函數,至關於Python中表達式語句,o.attr_name。

 

PyObject* Py_BuildValue(char* format, …)

和PyArg_Parse恰好相反,構建一個參數列表,把C類型轉換爲Python對象,使得Python裏面可使用C類型數據。

 

PyObject* PyEval_CallObject(PyObject* pfunc, PyObject*pargs)

此函數有兩個參數,並且都是Python對象指針,其中pfunc是要調用的Python 函數,通常說來可使用PyObject_GetAttrString()得到,pargs是函數的參數列表,一般是使用Py_BuildValue()來構建。

相關文章
相關標籤/搜索