相关疑难解决方法(0)

在使用boost的c ++中你好世界python扩展?

这是我使用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:没有终止此类文件或目录编译.

c++ linux compiler-errors boost-python

6
推荐指数
1
解决办法
5483
查看次数

如何修复:Anaconda 找不到 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 提供其他信息吗?

c++ python binding

3
推荐指数
1
解决办法
4425
查看次数

标签 统计

c++ ×2

binding ×1

boost-python ×1

compiler-errors ×1

linux ×1

python ×1