Boost.Python构建
我真的搞不懂,怎么正确地构建一个使用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_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之前不要包含任何系统头文件。这个限制实际上是由Python施加的,或者更准确地说,是Python与操作系统的交互造成的。详细信息请查看http://docs.python.org/ext/simpleExample.html。
也许这能帮到你?
2
这看起来像是在链接阶段缺少了一个库。所有那些未定义的引用都是包含在Python库里的。你可能只需要在最后的gcc命令中加上类似“-lpython2.5”的东西。