7

C++ で記述されたコードがあります。

#include <boost/python.hpp>

char const* greet()
{
  return "Yay!";
}

BOOST_PYTHON_MODULE(libtest)
{
  using namespace boost::python;
  def("greet", greet);
} 

今、私はこの動的ライブラリをPythonにインポートしたい:

import libtest

しかし、私は得る:

ImportError: /usr/lib/libboost_python.so.1.54.0: undefined symbol: PyClass_Type

私は何をすべきか?私のOSはArch Linuxです。

4

2 に答える 2

2

Boost.Python とlibtestモジュールの両方をビルドするとき、および をインポートするときは、同じバージョンの Python を使用してくださいlibtest

PyClass_Typeこれは Python 2 C API の一部であり、Python 3 C API の一部ではありません。したがって、Boost.Python ライブラリは Python 2 に対してビルドされた可能性があります。ただし、Python 3 インタープリターによって読み込まれているため、PyClass_Typeは使用できません。

于 2013-11-08T23:59:09.320 に答える