1

真的无法理解,如何正确构建使用 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);
}

这是 bulid 日志:http ://dpaste.com/179232/ 。无法想象我忘记了什么。


系统:arch linux;

ls /usr/lib |grep boost : http://dpaste.com/179233/

4

2 回答 2

2

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

于 2010-04-04T17:23:59.557 回答
1

您似乎缺少 python 本身的标题。

诸如PySequence_GetSlice和之类的符号PyExc_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 之前 #include 任何系统头文件。这个限制实际上是由 Python 施加的,或者更准确地说,是由 Python 与您的操作系统的交互施加的。有关详细信息,请参阅 http://docs.python.org/ext/simpleExample.html

也许这可以帮助?

于 2010-04-04T05:39:53.510 回答