c++调用python读表错误

c++调用python读表错误
Py_Initialize();
PyRun_SimpleString("import pandas as pd");

PyRun_SimpleString("print('hello world')");


PyObject* pModule = NULL;
PyObject* pFunc = NULL;
PyObject* pArg = NULL;


pModule = PyImport_ImportModule("testMultiprocessingDll");
pFunc = PyObject_GetAttrString(pModule, "Start1");

//int returnedString = 1;

PyObject* funcRes = PyObject_CallObject(pFunc, NULL);
PyObject* pResultStr = PyObject_Repr(funcRes);

def Start1():
stocks = pd.read_excel(r'../data/筛选模型点位统计(1).xlsx')#.reset_index(drop=True)

img

你发布的代码似乎不完整,因为 Python 中没有定义“Start1”函数。你提供的代码似乎只是一个片段。

假设你已经在 Python 中定义了“Start1”函数并且它在从 Python 代码调用时工作正常,你可以检查一些事项来解决问题:

1.确保包含“Start1”函数的 Python 脚本位于正确的位置并且可以被你的 C++ 程序找到。你可能需要指定脚本的完整路径或确保它与您的 C++ 程序位于同一目录中。

2.检查 PyImport_ImportModule 和 PyObject_GetAttrString 函数的返回值以确保它们返回有效对象。如果这些函数中的任何一个返回 NULL,则意味着加载模块或检索函数时出错,你应该检查错误消息以了解哪里出了问题。

3.确保“Start1”函数没有参数,因为你将 NULL 传递给 PyObject_CallObject。如果函数接受参数,则需要创建 Python 对象来表示这些参数并将它们传递给 PyObject_CallObject。

4.检查 PyObject_CallObject 函数的返回值以确保它返回一个有效的对象。如果它返回 NULL,则表示调用该函数时出错,你应该检查错误消息以了解哪里出了问题。

希望这些提示将帮助你解决问题并使你的代码正常工作。

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^