python调用python无法返回_解决方案:c调用python,PyImport_Import或者PyImport_ImportModule总是返回为空...

/***************************************************************************************************

c_python_utils.h

C++ Network Library, Copyright (c) Datatom Software, Inc.(2015)

Author:

liu.pan (liu.pan@datatom.com)

Creating Time:

2015-5-4

***************************************************************************************************/#ifndef _DTCORE_C_PYTHON_UTILS_H_#define _DTCORE_C_PYTHON_UTILS_H_#include#include#ifdef __cplusplusextern "C"{#endif /* C++ */

/**

* 调用python类中的成员函数

* @param module python脚本名称,不含扩展

* @param class_name python类名称

* @param function python类成员函数

* @param format python类函数参数格式

* @return 返回字符串*/

char* py_call( const char* module, const char* class_name, char* function, char*format, ... )

{

PyObject* pName =NULL;

PyObject* pMod =NULL;

PyObject* pDict =NULL;

PyObject* pClass =NULL;

PyObject* pInstance =NULL;

PyObject* pParam =NULL;

PyObject* pResult =NULL;//导入模块

pName =PyString_FromString(module);

pMod=PyImport_Import(pName);if( !pMod )

{return "";

}//获取模块字典属性

pDict =PyModule_GetDict(pMod);if ( !pDict )

{return "";

}//通过字典获取模块中的类

pClass =PyDict_GetItemString(pDict, class_name);if ( !pClass )

{return "";

}

pInstance=PyInstance_New(pClass, NULL, NULL);if ( !pInstance )

{return "";

}

pResult=PyObject_CallMethod(pInstance, function, format);char *rlt_ch =NULL;

PyArg_Parse( pResult,"s", &rlt_ch );returnrlt_ch;

}/**

* 一些环境的初始化

**/

voidinit()

{

Py_Initialize();

PyRun_SimpleString("import sys");

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

}/**

* 逆初始化*/

voidfinit()

{

Py_Finalize();

}

#ifdef __cplusplus

}/*extern "C"*/

#endif /* C++ */

#endif //_DTCORE_C_PYTHON_UTILS_H_

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值