ArgumentError:Python参数类型与C ++签名不匹配:

时间:2017-02-01 04:20:21

标签: python c++ boost-python

我正在尝试从Python接口我的C ++代码。到目前为止,我已按照Boost提供的说明进行操作。即,可以从这里找到的那​​些:http://www.boost.org/doc/libs/1_60_0/libs/python/doc/html/tutorial/tutorial/exposing.html

我的问题是: 我可以从终端运行我的代码,但我不能在我的Anaconda / Spyder python编辑器中使用该类。在Anaconda Spyder编辑器中,如果我从终端运行相同的代码,我会收到签名错误。如何在编辑器中使其工作?

具体来说,如果我这样做:

    # test.py
    import greet_ext

    x = "test"
    planet = greet_ext.World(x)

我收到此错误:

    ArgumentError: Python argument types in World.__init__(World, str)
    did not match C++ signature:__init__(_object*)

C ++代码:

    #include <boost/python.hpp>
    #include <string>

    using namespace boost::python;

    // =========================================================
    struct World
    {
          World( const std::string& msg)
          {
              mMsg   = msg;
          }

          std::string show_message()
          {
              return mMsg;
          }

          std::string mMsg;

          };


    // =========================================================

    BOOST_PYTHON_MODULE(greet_ext)
    {
      class_<World>("World",init<const std::string&>())
           .def("show_message", &World::show_message)
           .def("show_number", &World::show_number);
    }

0 个答案:

没有答案