这是我使用boost进行python扩展的第一次尝试.有人可以帮助我理解导致编译错误的原因吗?
#include <iostream>
using namespace std;
void say_hello(const char* name) {
cout << "Hello " << name << "!\n";
}
#include <boost/python/module.hpp>
#include <boost/python/def.hpp>
using namespace boost::python;
BOOST_PYTHON_MODULE(hello)
{
def("say_hello", say_hello);
}
Run Code Online (Sandbox Code Playgroud)
user @ host:〜$ g ++ main.cpp -o test.so
在/usr/include/boost/python/detail/prefix.hpp:13:0中的文件中,来自/usr/include/boost/python/module.hpp:8,来自main.cpp:8:/ usr/include /boost/python/detail/wrap_python.hpp:50:23:致命错误:pyconfig.h:没有终止此类文件或目录编译.
我正在为库的 python 绑定设置 boost-python 。之前安装了 boost,但与 python2.7 链接。经过一番磨难后,以前的 boost 安装中的所有内容都消失了,我正在尝试安装新的 boost。
我使用 Linux Mint 进行记录,并使用 Anaconda 和 python 3.6.8。它在 CLI 中正常工作: python --version 给出 3.6.8
然后我开始按照构建 boost 的说明进行操作:https ://www.boost.org/users/history/version_1_69_0.html
我从其他线程得到的是这样做:
sudo apt-get install python3-dev
Run Code Online (Sandbox Code Playgroud)
我不确定我应该这样做,因为我有 anaconda3,但无论如何,我做到了。
./bootstrap.sh
Run Code Online (Sandbox Code Playgroud)
这里创建了文件project-config.jam,关于python的行说:
using python : 3.6 : /home/myUser/anaconda3 ;
Run Code Online (Sandbox Code Playgroud)
然后我继续使用 b2 进行构建:
sudo ./b2 --with-python -j8 install
Run Code Online (Sandbox Code Playgroud)
安装失败,文字墙充满了这些:
./boost/python/detail/wrap_python.hpp:50:11: fatal error:
pyconfig.h: No such file or directory
# include <pyconfig.h>
^~~~~~~~~~~~
compilation terminated.
Run Code Online (Sandbox Code Playgroud)
当我在 ~/anaconda3/include/python3.6m 内部搜索时,文件 pyconfig.h 按预期位于那里
我应该向 b2 或 bootstrap 提供其他信息吗?