VS2010调用python

1.VS2010配置

  • VC++ Directories->Include Directories中添加**/python/include文件;
  • VC++ Directories->Library Directories中添加**/python/libs文件;

注意最好配置的32位python,配置成64位的python运行不了,这块我不确定是不是因为我的编译器是32位的原因;

         

 Linker->input->additional Dependencies 最后面添加

D:/Users/Administrator/AppData/Local/Programs/Python/Python35-32/libs/python35.lib

 把python文件夹中的dll文件复制到与执行程序同一个文件夹中  

                                        

2.c++调用python代码 

2.1头文件中要包含python文件

#include <Python.h>

2.2 初始化及函数调用

PyObject* m_pModule;
PyObject* m_pFunc;
PyObject* m_pargs;
PyObject		*pReturn=NULL;

Py_Initialize();		//初始化
PyRun_SimpleString("import sys");
PyRun_SimpleString("sys.path.append('./')");//这一步很重要,修改Python路径
m_pModule = PyImport_ImportModule("Calculate");//这里是要调用的文件
m_pFunc = PyObject_GetAttrString(m_pModule, "Calculate_feature");//这里是要调用的函数名
m_pargs = PyTuple_New(6);

//构建参数tuple
PyTuple_SetItem(m_pargs, 0,Py_BuildValue("s",pFileName));
PyTuple_SetItem(m_pargs, 1,Py_BuildValue("s",pFileXml));
PyTuple_SetItem(m_pargs, 2,Py_BuildValue("i",m_nStation));
PyTuple_SetItem(m_pargs, 3,Py_BuildValue("d", m_fImageSize));
PyTuple_SetItem(m_pargs, 4,Py_BuildValue("s", m_cNowTime));
PyTuple_SetItem(m_pargs, 5,Py_BuildValue("d", m_fMeanYesterdayCoverage));	

//调用函数,得到返回值
pReturn=PyObject_CallObject(m_pFunc, m_pargs);
float fCoverage;
if (NULL != pReturn)
{
  PyArg_Parse(pReturn, "f", &fCoverage);
}

Py_Finalize();//调用Py_Finalize,这个根Py_Initialize相对应的。

python 返回的是numpy.float64的数据。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值