VC与Python交互
来源:互联网 发布:网络布线工程报价单 编辑:程序博客网 时间:2024/06/08 08:45
很简洁很给力的文章。
extern "C" bool RunFyFuntion(char *strFilename, char *strModuleName, char *strFunctionName){PyObject *pParams = NULL;PyObject *pModuleOld = NULL;PyObject *pModule =NULL;PyObject *pName = NULL;PyObject *pResult = NULL;PyObject *pDict = NULL; PyObject *pFunc = NULL;bool bResult = false;class PyThreadStateLock PyThreadLock;pName = PyString_FromString(strFilename);pModuleOld = PyImport_Import(pName);if(!pModuleOld){QDLogs.SendMsg(LOG_OUTPUT_ERROR_TEAM, "%s file read error", strFilename);goto last;}pModule = PyImport_ReloadModule(pModuleOld);if(!pModule){QDLogs.SendMsg(LOG_OUTPUT_ERROR_TEAM, "%s file read error", strFilename);goto last;}pDict = PyModule_GetDict(pModule);// 获得函数名pFunc = PyDict_GetItemString(pDict, strFunctionName);if (!pFunc || !PyCallable_Check(pFunc)){QDLogs.SendMsg(LOG_OUTPUT_ERROR_TEAM, "%s function read error", strFunctionName);goto last;}// 设置参数pParams = PyTuple_New(2);PyTuple_SetItem(pParams, 0, Py_BuildValue("s", "abc"));PyTuple_SetItem(pParams, 1, Py_BuildValue("i", 1));// 执行函数pResult = PyObject_CallObject(pFunc, pParams);if(pResult == Py_True){bResult = true;}else{QDLogs.SendMsg(LOG_OUTPUT_ERROR_TEAM, "%s function run error", strFunctionName);goto last;}last:Py_XDECREF(pFunc);Py_XDECREF(pDict);Py_XDECREF(pParams);Py_XDECREF(pModuleOld);Py_XDECREF(pModule);Py_XDECREF(pName);Py_XDECREF(pResult);return bResult;}from:kira8dao7 http://blog.csdn.net/kira8dao7/article/details/5888452
- VC与Python交互
- VC与Python交互
- VC与web交互
- VC与Python交互(一)(静态编译Python的方法)
- VC与Python交互(三)(自定义Python模块/函数)
- VC与Python交互(四)(C执行Python文件)
- VC++ CHtmlView与Javascript交互
- VC与JavaScript交互(二)
- Lua与VC的交互
- python与php交互
- python与Mysql交互
- C++与python交互
- Python与JavaScript交互
- Python与C++交互
- Python与Java交互
- [Python]与shell交互
- mongoDB与Python交互
- 与python交互
- jQuery中ajax和post处理json的不同
- 图片放大缩小并且文字与图片相对位置不变
- 关于libsvm的使用问题
- “文本”与“二进制”学习记录
- Nand flash驱动的编写与移植
- VC与Python交互
- C语言数组应注意问题
- xcode破解编译
- 随机数赋值,srand()放在循环体和循环体外的区别
- 让Select的option支持双击事件
- Java 中的Double Check Lock
- Hibernate merge、update与saveOrUpdate方法的区别
- 如何将android源码导入到eclipse
- Unable to resolve target 'android-7'