Boost.Python 找不到 pyconfig.h。它需要去哪里?

Boost.Python can't find pyconfig.h. Where does it need to go?

本文关键字:找不到 Python pyconfig Boost      更新时间:2023-10-16

我在main.cpp中编写了一个非常简单的c++函数:

#include <iostream>
using namespace std;
int SomeCalculation(float x){
    int decision = 0;
    if (x > 1){
        decision = 1;
    }
    return decision;
}

我现在正尝试使用Boost.Python将其编译为共享库。为此我创建了decision.cpp:

#include <boost/python.hpp>
BOOST_PYTHON_MODULE(decision)
{
    using namespace boost::python;
    def("main", main);
}

不幸的是,我得到以下错误:

In file included from /usr/include/boost/python/detail/prefix.hpp:13:0,
                 from /usr/include/boost/python/args.hpp:8,
                 from /usr/include/boost/python.hpp:11,
                 from decision.cpp:1:
/usr/include/boost/python/detail/wrap_python.hpp:50:23: fatal error: pyconfig.h: File or folder does not exist.
compilation terminated.

因为我不知道这个文件在哪里,所以我做了一个简单的sudo find / -name pyconfig.h,它找到了几个pyconfig.h文件。因此,我只是简单地复制了对我来说最通用的文件版本,到我正在工作的文件夹:

cp /usr/include/python2.7/pyconfig.h /home/kram/c++/cmod/pyconfig.h

再次运行我的编译命令(g++ -fPIC -g -ggdb -c decision.cpp -o decision.so)给出了与之前相同的错误。

有谁知道我如何解决这个pyconfig.h依赖?

[edit]添加代码

尝试命令:

g++ -g -shared -fPIC -I/usr/include/python2.7 decision.cpp -lpython2.7 -lboost_python -o decision.so