Boost.Python构建

1 投票
2 回答
917 浏览
提问于 2025-04-15 21:12

我真的搞不懂,怎么正确地构建一个使用boost.python的项目。我已经包含了boost_(python/thread/system)-mt。下面是一个简单的模块文件:

#include <boost/python.hpp>
#include "script.hpp"
#include "boost/python/detail/wrap_python.hpp"

BOOST_PYTHON_MODULE(temp)
{
    namespace py = boost::python;

    py::def("PyLog", &engine::log);
}

这是构建日志:http://dpaste.com/179232/。我真想不出我忘了什么。


系统:arch linux;

运行命令 ls /usr/lib |grep boost 的结果是:http://dpaste.com/179233/

2 个回答

1

看起来你缺少了Python本身的一些头文件。

PySequence_GetSlicePyExc_ValueError 这些符号是来自Python的头文件,而不是boost::python的头文件。

我能说的就这些了,抱歉。我对boost::python不是很了解。让我感到惊讶的是,你居然没有遇到“缺少包含文件”的错误。我猜boost::python自己并没有包含Python的头文件吧?

顺便说一下,我在这个链接上看到了一些内容:http://www.boost.org/doc/libs/1_42_0/libs/python/doc/building.html

确保在wrap_python.hpp之前不要包含任何系统头文件。这个限制实际上是由Python施加的,或者更准确地说,是Python与操作系统的交互造成的。详细信息请查看http://docs.python.org/ext/simpleExample.html

也许这能帮到你?

2

这看起来像是在链接阶段缺少了一个库。所有那些未定义的引用都是包含在Python库里的。你可能只需要在最后的gcc命令中加上类似“-lpython2.5”的东西。

撰写回答