我就是我2333 2021-04-20 15:32 采纳率: 100%
浏览 105
已采纳

MFC中调用python接口不成功

各位过路的大神,请问为什么在MFC框架中调用python脚本,脚本里面不能包含有任何能在python console里面输出的语句,一旦有,脚本运行到这里就结束了。相应的函数或类调用返回就是NULL!!!!

  • 写回答

3条回答 默认 最新

  • 桔子code 2021-04-20 22:07
    关注

    回忆下你在MFC中用的printf()打印输出有效吗?如果无效 说明console(标准输出)本身没有启动,所以Python中print试图向标准输出的时候出现异常了(猜测,未验证)。

    参考在MFC开后台console窗口的解决办法:1.在stdafx.h中添加#pragma comment( linker, "/subsystem:console" )    2.如果是对话框在OnInitDialog中添加AllocConsole(),如果是单文档或多文档一般在InitInstance()中添加。

    如果在MFC程序中调出console窗口正常了,再尝试用python  print语句是否正常。

    这个是在vs2015 MFC程序调出console窗口的一个例子:

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
  • 天元浪子 Python领域优质创作者 2021-04-20 16:05
    关注

    我有点好奇,题主是怎么在MFC框架中调用python脚本的?能贴一下代码,或者截个图吗?

    评论
  • 我就是我2333 2021-04-20 16:35
    关注
    	//*python调用*//
       // 初始化python模块
    	Py_Initialize();
    	//检查初始化是否成功
    	if (!Py_IsInitialized())
    	{
    		printf("初始化失败");
    		Py_Finalize();
    	}
    
    	PyObject* pModule;
    	PyObject* pFunc = NULL;
    	PyObject* pArg = NULL;
    	PyRun_SimpleString("import sys");
    	PyRun_SimpleString("sys.path.append('./')");//设置python模块,搜寻位置,文件放在.cpp文件
    
    	pModule = PyImport_ImportModule("batch");//The file name of python
    
    	if (!pModule)
    	{
    		printf("Failed to import py file!");
    		Py_Finalize();
    	}
    	else
    	{
    		PyRun_SimpleString("import os");
    		PyRun_SimpleString("os.chdir('./')");
    		pFunc = PyObject_GetAttrString(pModule, "generate");// The function name in Python file
    		if (!pFunc)
    		{
    			printf("Failed to import function! ");
    			Py_Finalize();
    		}
    	}
    
    	PyObject* pyParams = Py_BuildValue("()");
    	int  result=0;
    	pArg = PyEval_CallObject(pFunc, pyParams);
    	PyArg_Parse(pArg, "i", &result);
    
    	CString str;
    	str.Format(_T("%d"), result);
    
    	MessageBox(NULL, LPCTSTR(str), TEXT("HelloMsg"), 0);

    在按钮里面响应~

    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 ECharts 增加Zoom,整行包括右边的Text一起滑动
  • ¥15 关于网上一个easyx制作的见缝插针小游戏(c++)
  • ¥15 开地址法双散列函数处理碰撞
  • ¥15 想问一下这个是什么情况 虚拟机Linux打不开了
  • ¥15 联通光猫掉注册了怎么重新注册上去
  • ¥15 关于unity开发steamvr程序遇到的问题
  • ¥60 求tc downloader的下载方式
  • ¥15 华为 快捷方式 手电筒 接口
  • ¥15 Qt6.5支不支持Android13开发啊
  • ¥20 网络只能跑一半,应该如何设置