PyObject_GetAttrString C++;函数返回NULL:无法从C+;调用Python函数+; 我刚刚开始用Python和C++进行合作,我有点困惑,为什么我不能用C++来调用Python中的函数。

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

这是我目前用C++编写的测试代码:

      #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')");*