我想运行一个python脚本,该脚本使用仅在C 程序中与Python2.7一起使用的库。
我以发行模式运行此操作,因为我没有python27_d.lib vs 2015。
PyObject *pName, *pModule, *pDict, *pFunc, *pValue;
Py_Initialize();
std::string name = "C:/pathToProgamm/pythonHTTPS.py"
pName = PyString_fromString(name.c_strg());
pModule = Pyimport_Import(pName);
pDict = PyModule_GetDict(pModule);
在这里我得到错误python27.pdb未加载
我试图通过更改为"仅指定的模块"(来自"所有模块,除非排除")在VS 2015中的调试 ->符号下进行解决。跳过了Python27.dll的符号加载,因为它未在随附的模块列表中指定。我还尝试下载PDB文件并指向它,但这也不起作用。
我想做的是:
if (pName = PyString_FromString(name_i.c_str()))
{
if (pModule = PyImport_Import(pName))
{
if (pDict = PyModule_GetDict(pModule))
{
if (pFunc = PyDict_GetItemString(pDict, NULL))
{
std::cout << "success" << std::endl;
}
else
{
std::cout << "failed pFunc" << std::endl;
return;
}
}
else
{
std::cout << "failed pDict" << std::endl;
return;
}
}
else
{
std::cout << "failed pModule" << std::endl;
return;
}
}
else
{
std::cout << "failed pName" << std::endl;
return;
}
但结果是 ->失败的pmodule
因此,错误在pmodule = pyimport_import(pname);
任何人都可以告诉我为什么这会失败,以及如何使我的Python版本(2.7.14)
#ifdef _DEBUG
#define _DEBUG_WAS_DEFINED 1
#undef _DEBUG
#endif
#include <Python.h>
#ifdef _DEBUG_WAS_DEFINED 1
#define _DEBUG 1
#endif
为我解决了调试错误(我仍然无法在Python脚本中调试,但我不需要)。
重要的是要在不。Py的情况下给出Python模块的名称。