由于想对c++产生的数据进行条形图显示,想调用python中的matplotlib模块来进行柱状图显示,所以研究了一下使用c++如何调用python程序,中间遇到了好多问题,参考了好多博客,终于成功,现在将其记录下来。
1、使用VS2013创建工程,工程名test。
2、将python安装目录下的include和libs两个文件夹,拷贝到test.sln同目录下。
3、将libs中的python27.lib重命名为python27_d.lib(这个的原因是include目录下的pyconfig.h里面的代码再debug下调用的是python27_d.lib)。否则会出现以下错误:
>LINK : fatal error LNK1104: 无法打开文件“python27_d.lib”
4、点击test项目右键,在属性->c/c++->常规项->附加包含目录中添加..\include。在属性->链接器->常规->附加库依赖中添加..\libs。在属性->链接器->输入->附加依赖项中添加python27_d.lib。
5、在属性页面将平台配置为x64,不然的话会出现以下错误:
error LNK2019: 无法解析的外部符号 __imp__Py_Initialize,该符号。
6、按照以上步骤就会将其已经配置好了。这时候就可以进行测试了。
测试程序的主要功能是调用python的print函数打印Hello World!!程序如下:
#include "stdafx.h"
#include <python.h>
int main()
{
Py_Initialize(); //调用Py_Initialize()进行初始化
PyRun_SimpleString("print 'Hello World!!'");
Py_Finalize(); //调用Py_Finalize,和Py_Initialize相对应的.
return 0;
}
测试结果如下所示:
一些函数的具体用法继续研究。
参考文章:c++调用python