PyObject_GetAttrString C++;函数返回NULL:无法从C+;调用Python函数+; 我刚刚开始用Python和C++进行合作,我有点困惑,为什么我不能用C++来调用Python中的函数。
这是我目前用C++编写的测试代码:PyObject_GetAttrString C++;函数返回NULL:无法从C+;调用Python函数+; 我刚刚开始用Python和C++进行合作,我有点困惑,为什么我不能用C++来调用Python中的函数。,python,c++,python-2.7,Python,C++,Python 2.7,这是我目前用C++编写的测试代码: #include <iostream> #include <Python.h> using namespace std; int main() { Py_Initialize(); PyObject* myModuleString = PyString_FromString("test"); PyO
#include <iostream>
#include <Python.h>
using namespace std;
int main()
{
Py_Initialize();
PyObject* myModuleString = PyString_FromString("test");
PyObject* myModule = PyImport_Import(myModuleString);
if( myModule )
{
PyObject* myFunction = PyObject_GetAttrString(myModule, "Hello");
if( myFunction )
{
PyEval_CallObject( myFunction, NULL );
}
else
{
fprintf( stderr, "myFunction is NULL" );
}
}
else
{
fprintf( stderr, "myModule is NULL" );
}
Py_Finalize();
cin.get();
return 0;
}
在进行更复杂的测试之前,我遇到了一个问题,PyObject_GetAttrString返回NULL,所以我想做一个更简单的测试,在调用PyObject_GetAttrString后仍然收到NULL。根据我的理解,PyObject_GetAttrString将PyObject*带到函数,然后我调用它,因此在那里接收NULL基本上意味着我无法调用函数
同样是的,我已经看过并测试了的步骤5.3中给出的示例(我使用的是2.7.7,因为我计划与3ds Max集成)。PyObject_GetAttrString仍然存在同样的问题
我假设这是C++或Python代码中的一个简单错误或步骤。
< P>将Python脚本名从<代码> Test.py/<代码>改为我所做的任何工作。 < P>我也遇到了类似的问题。我发现传递给python的字符串中的空格太小了。据我所知,你的打印声明有6个空格而不是4个。备份它,看看是否一切都不清楚。我也有同样的问题。虽然test.py
和mycode.c
在同一个文件夹(/home/user/python/example)中,但我必须在py_Initialize()之后添加对路径的引用代码>如下行所示
PyRun_SimpleString ("import sys; sys.path.insert(0, '/home/user/python/spp')");*
替换/主。。。走你的路
我以前的代码没有那一行代码,但是PyImport\u Import
正在工作,而PyObject\u GetAttrString
没有。对我来说没有意义,“别问我,我不知道-奥兹”
PyRun_SimpleString ("import sys; sys.path.insert(0, '/home/user/python/spp')");*