1. 程式人生 > >windows 下 c++ 如何呼叫 python 3

windows 下 c++ 如何呼叫 python 3

本文所使用環境: win10 (x64) +  VS2013 + python 3.5.2 (x64)

python官網下載地址

一、先配置環境

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;
}

 

參考:

C++呼叫Python例項

混合程式設計之——C++呼叫python2.7&python3.5