作者:iflbicfb_6114756 | 来源:互联网 | 2022-12-18 11:13
以前写的程序存一下.调用python3.4的有时会提示LNK1104:无法打开文件“python34_d.lib”的错误把“pyconfig.h"的文件改了:ifdefined(_DEB
以前写的程序存一下.调用python3.4的
有时会提示LNK1104: 无法打开文件“python34_d.lib”的错误
把“pyconfig.h"的文件改了: ifdefined(_DEBUG)
pragmacomment(lib,"python34.lib")
调用程序过程如下:
//调用python脚本所需的头文件
#include "Python.h"
...
//初始化
Py_Initialize();
if(!Py_IsInitialized())MessageBox(_T("初始化失败!"),_T("警告"),MB_OK);else{
//调用python脚本的各项命名,初始化
PyObject*pname=NULL,*pModule,*pDict,*pFunc=NULL;
std::wstring str=L"WrittennPython";//python 文件名:WrittennPython
std::wstring_convertcodecvt_utf8<wchar_t>> conv;
//将wstring类型转为string类型
std::string sr=conv.to_bytes(str);
//调用python文件,并未用到,忘了干什么用的
pname=PyUnicode_FromUnicode(str.c_str(),str.size());
//导入脚本
pModule=PyImport_ImportModule(sr.c_str());
if(!pModule)
MessageBox(_T("Cannot find WrittennPython.py!"),_T("警告"),MB_OK);
//python文件函数导入
pDict=PyModule_GetDict(pModule);
if(!pDict)
return;
//得到函数名称,该函数无需参数输入
pFunc=PyDict_GetItemString(pDict,"handwritingClassTest");
if(!pFunc||!PyCallable_Check(pFunc))
{
MessageBox(_T("Cannot find function [handwritingClassTest]!"),_T("警告"),MB_OK);
return;
}
int n=-1;
//调用函数,并得到最终的结果,转为int类型
n=_PyLong_AsInt(PyObject_CallObject(pFunc,NULL));
s=_T("识别出的结果为:"),s1=_T("");
s1.Format(_T("%d"),n);
s+=s1;
MessageBox(s,_T("识别结果"),MB_OK);
//调用结束,销毁脚本调用
PyErr_Clear();
Py_Finalize();
}