C++ (VS 2013)调用Python (3.4)

2026-03-03 03:18:34

1、新建VS项目。配置项目Debug属性。如下图所示。注意在Additional Dependencies里,使用的是python34.lib,而不是python34_d.lib.

项目的Release属性可按相同方法配置。

C++ (VS 2013)调用Python (3.4)

C++ (VS 2013)调用Python (3.4)

C++ (VS 2013)调用Python (3.4)

2、程序的编写参考net_colon_//www_dot_udpwork_dot_com/item/10422_dot_html中所述方法。

编写的Python程序和.cpp文件在同一文件夹下。

在调用函数时,使用

PyObject_CallFunction(pFunc, "s", "zhengji");

其中"s"表示参数为字符串,"zhengji"为函数pFunc的参数。

假设需要pFunc调用两个整型的参数,可使用

PyObject_CallFunction(pFunc, "ii", 1, 2);

参数详细的介绍见Py_BuildValue函数说明

nets_colon__slash__slash_docs_dot_python_dot_org_slash_3_slash_c-api_slash_arg_dot_html#c_dot_Py_BuildValue.

3、注意Python安装路径下并无python34_d.lib文件,因此需要强制要求python在任何情况下都是用非调试版本(python34.lib)。参考net_colon__slash__slash_www_dot_cppblog_dot_com_slash_API_slash_archive_slash_2013_slash_04_slash_25_slash_199720_dot_aspx.

4、若需执行一个python文件,如ex.py,可使用一下语句:

PyObject *obj = Py_BuildValue("s", "ex.py");

FILE *fp = _Py_fopen_obj(obj, "r+");

if (fp == NULL)

return -1;

PyRun_SimpleFile(fp, "ex.py");

或参考:

net_colon__slash__slash_stackoverflow_dot_com_slash_questions_slash_3654652_slash_why-does-the-python-c-api-crash-on-pyrun-simplefile?newreg=f3d8f1238786478c9d1ec076ce349380.

猜你喜欢