windows 下 c++ 如何呼叫 python 3
阿新 • • 發佈:2018-11-10
本文所使用環境: win10 (x64) + VS2013 + python 3.5.2 (x64)
一、先配置環境
1.安裝python
2.把 python 新增到VS2013
(1) VS新建一個空的Win32控制檯專案,取名為test_python,專案儲存路徑為 D:\test\testpython35
(2) 將 python 安裝目錄下的,include資料夾、libs資料夾都拷貝到test_python35資料夾中;
(3) 然後新增vs的包含目錄
(4) 然後生成解決方案,在生成的Debug路徑下新增python35.dll(python的安裝路徑裡面有)、呼叫的python原函式(Test001.py),如下圖所示
(5) 重新生成解決方案,再次執行就可以了。
附錄:
Test001.py
def Hello():
print("Hello Python")
def Add(a, b):
return a+b
main.cpp:
// testpython.cpp : 定義控制檯應用程式的入口點。 // #include "stdafx.h" #include <iostream> #include <Python.h> using namespace std; void Hello() { Py_Initialize();//呼叫Py_Initialize()進行初始化 PyObject * pModule = NULL; PyObject * pFunc = NULL; pModule = PyImport_ImportModule("Test001");//呼叫的Python檔名 pFunc = PyObject_GetAttrString(pModule, "Hello");//呼叫的函式名 PyEval_CallObject(pFunc, NULL);//呼叫函式,NULL表示引數為空 Py_Finalize();//呼叫Py_Finalize,和Py_Initialize相對應的. } //呼叫Add函式,傳兩個int型引數 void Add() { Py_Initialize(); PyObject * pModule = NULL; PyObject * pFunc = NULL; pModule = PyImport_ImportModule("Test001");//Test001:Python檔名 pFunc = PyObject_GetAttrString(pModule, "Add");//Add:Python檔案中的函式名 //建立引數: PyObject *pArgs = PyTuple_New(2);//函式呼叫的引數傳遞均是以元組的形式打包的,2表示引數個數 PyTuple_SetItem(pArgs, 0, Py_BuildValue("i", 6));//0--序號,i表示建立int型變數 PyTuple_SetItem(pArgs, 1, Py_BuildValue("i", 8));//1--序號 //返回值 PyObject *pReturn = NULL; pReturn = PyEval_CallObject(pFunc, pArgs);//呼叫函式 //將返回值轉換為int型別 int result; PyArg_Parse(pReturn, "i", &result);//i表示轉換成int型變數 cout << "6 + 8 = " << result << endl; Py_Finalize(); } int _tmain(int argc, _TCHAR* argv[]) { cout << "呼叫Test001.py中的Hello函式..." << endl; Hello(); cout << "\n呼叫Test001.py中的Add函式..." << endl; Add(); getchar(); return 0; }
參考: