windows系统下,书写python脚本,通过C++去调用,执行PY脚本,示例代码如下(非完整性示例):
#include <iostream>
#include "MiniDumper.h"
#include <atlstr.h>
#include <string>
#include <map>
#include <vector>
#include "./include/Python.h"
#include "sp_get_env.h"
#include "log4cxx/propertyconfigurator.h"
#include "unicode/unistr.h"
#include "unicode/ucnv.h"
using namespace log4cxx;
using namespace std;
#ifdef _DEBUG
#pragma comment(lib, "python27_x64d.lib")
#else
#pragma comment(lib, "python27.lib")
#endif
#ifdef _WIN64
#pragma comment(lib, "log4cxx64.lib")
#pragma comment(lib, "ParseConfigFileDLL64.lib")
#pragma comment(lib,"icuuc64.lib")
#else
#pragma comment(lib, "log4cxx32.lib")
#pragma comment(lib, "ParseConfigFileDLL32.lib")
#pragma comment(lib,"icuuc32.lib")
#endif
typedef map<string, string> mapString;
void callModuleMethod(string moduleName, string methodName, wchar_t* fileBuffer, mapString& dict)
{
LoggerPtr logger = Logger::getLogger("precisedLogger");
if (moduleName.empty())
{
LOG4CXX_ERROR(logger, "errorCode = 530236");
cout<<"0||";
return;
}
if (methodName.empty())
{
LOG4CXX_ERROR(logger, "errorCode = 530230");
cout<<"0||";
return;
}
sp_get_env localSp;
localSp.initialize();
string path = localSp.get_Env();
string pythonVersionPath = localSp.getConfigValue("pythonVersionPath");
path += pythonVersionPath;
Py_SetPythonHome((char*)(path.c_str()));
Py_Initialize();
if (!Py_IsInitialized())
{
LOG4CXX_ERROR(logger, "errorCode = 530231");