MFC中调用python接口不成功

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

回忆下你在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窗口的一个例子:

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

	//*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);

在按钮里面响应~