cpp调用python_表达式计算之c++调用python

本文使用c++调用python使用简单的计算功能。

vc下新建工程,添加代码:// ExpCalcTest.cpp : Defines the entry point for the console application.

//

#include "stdafx.h"

#include "stdio.h"

#include "Python.h"

int main(int argc, char* argv[])

{

char exp[][100] = {"1+3*4-6/2","2*(2+3-1)-(7+12)/3","adf + 30", "100/0 + 10"};

PyObject* pModule = NULL;

PyObject* pCppEval = NULL;

PyObject* pArg = NULL;

PyObject* pResult = NULL;

int nRet = 0;

Py_Initialize();

if (!Py_IsInitialized())

{

printf("初始化python环境出错\n");

return -1;

}

pModule = PyImport_ImportModule("cppevalpy");

if(!pModule)

{

printf("导入脚本文件cppevalpy.py出错\n");

return -1;

}

pCppEval = PyObject_GetAttrString(pModule, "cppeval");

if(!pCppEval)

{

printf("获得函数cppeval出错\n");

return -1;

}

char* sResult = (char*)malloc(100);

for(int i=0;i

{

pArg = Py_BuildValue("(s)", exp[i]);

if(!pArg)

{

printf("构造参数出错\n");

return -1;

}

pResult = PyEval_CallObject(pCppEval,pArg);

PyArg_ParseTuple(pResult,"is",&nRet,&sResult);

printf("%d,%s\n",nRet,sResult);

}

free(sResult);

Py_Finalize();

return 0;

}

然后需要修改vc的查找目录:

include目录添加{python安装目录}/include

lib目录添加{python安装目录}/libs

因为我的python安装版没有debug版的lib,所以vc工程我选择release版本。

如果需要使用debug版,请到网上下载debug版的lib库,或者自己编译python。

然后在编译生成的可执行程序目录添加脚本文件cppevalpy.py:from __future__ import division

def cppeval(exp):

try:

result = eval(exp)

except Exception, e:

return (-1,str(e))

if isinstance(result,float):

result = round(result,2)

result = str(result)

if result.endswith('.0'):

result = str(int(float(result)))

return (1,result)

在测试程序中故意弄了两个错误看看

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值