0

我有一个第三方 C++ API,带有头文件的 Linux 动态库 (.so)。

我的问题是,我可以直接编写一个绑定文件并用于boost.python创建 python 绑定。我试过这样做,我只从 API 向我的 bind.cc 文件添加了一个函数,编译它并创建了另一个.so文件。但是当我在 python3 中导入它时,它抛出了一个ImportError.

这是我的绑定文件:

#include <boost/python/module.hpp>
#include <boost/python/def.hpp>
#include "tp_api.h"
BOOST_PYTHON_MODULE(bb_api)
{
  using namespace boost::python;
  def("tpGetAPIVersion", tpGetAPIVersion);
}

构建命令:

g++ -O3 -Wall -shared -std=c++11 -fPIC -undefined -I/usr/local/include -L/usr/local/lib -I/usr/include/python3.8 -lboost_python39 -o tp_api python3-config --extension-suffix
bind.cc

这将创建:tp_api.cpython-38-x86_64-linux-gnu.so

然后在python3中:

from tp_api import tpGetAPIVersion

抛出:

import Error undefined symbol: 
  _ZTIN5boost6python7objects21py_function_impl_baseE.  
4

0 回答 0