c语言如何调用python代码_C语言程序 c如何调用python程序

file 1 [python file]: math_test.py

def add_func(a,b):

return a+b

def sub_func(a,b):

return (a-b)

file 2 [c source file]: c_call_python.c

#include

#include

#include

#include "python2.7/Python.h"

int main(int argc, char** argv)

{

int arg0 = 0,arg1 = 0;

if(argc == 3){

arg0 = atoi(argv[1]);

arg1 = atoi(argv[2]);

}else{

printf("please input 2 args!!\n");

return -1;

}

Py_Initialize();

if ( !Py_IsInitialized())

return -1;

PyRun_SimpleString("import sys");

PyRun_SimpleString("sys.path.append('./')");

PyObject *pModule;

PyObject *pFunction;

PyObject *pArgs;

PyObject *pRetValue;

pModule = PyImport_ImportModule("math_test");

if(!pModule){

printf("import python failed!!\n");

return -1;

}

pFunction = PyObject_GetAttrString(pModule, "add_func");

if(!pFunction){

printf("get python function failed!!!\n");

return -1;

}

pArgs = PyTuple_New(2);

PyTuple_SetItem(pArgs, 0, Py_BuildValue("i", arg0));

PyTuple_SetItem(pArgs, 1, Py_BuildValue("i", arg1));

pRetValue = PyObject_CallObject(pFunction, pArgs);

printf("%d + %d = %ld\n",arg0,arg1,PyInt_AsLong(pRetValue));

Py_DECREF(pModule);

Py_DECREF(pFunction);

Py_DECREF(pArgs);

Py_DECREF(pRetValue);

Py_Finalize();

return 0;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值