【发布时间】:2013-06-04 09:35:07
【问题描述】:
我在 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 依赖项吗?
[编辑] 添加的代码片段
【问题讨论】:
-
AFAIK 您应该引用正确的标头并链接到 python 库。我认为这是通过
-lPython和-IPython完成的。
标签: c++ python import shared-libraries boost-python