基本boost中的未定义引用:python程序

时间:2012-11-28 12:19:25

标签: c++ python boost embed boost-python

我想开始使用boost:python在我的C ++程序中嵌入python,但我已经遇到了这个简单代码的问题:

#include <boost/python.hpp> //boost libraries
#include <Python.h> //python libraries

using namespace boost::python;

int main()
{
    Py_Initialize();

    object main_module = import("__main__");
    object main_namespace = main_module.attr("__dict__");

    return 0;
}

我只是启动解释器并导入主模块,但编译器已经遇到了问题:

/home/i7941878/Code/pythonTest/main.cpp:-1: error: undefined reference to `boost::python::detail::str_base::str_base(char const*)'

/home/i7941878/Code/pythonTest/main.cpp:-1: error: undefined reference to `boost::python::import(boost::python::str)'

/home/i7941878/Code/pythonTest/main.cpp:-1: error: undefined reference to `boost::python::api::getattr(boost::python::api::object const&, char const*)'

我不知道为什么我会收到这些错误。我很确定boost:python是正确构建的。

任何能够让我高兴的人吗?

我正在使用QT创建器来构建和编译。 如果我使用G ++与-I/usr/include -I/usr/include/python2.6 main.cpp进行编译,我得到:

/tmp/ccI8x97b.o: In function `main':
main.cpp:(.text+0xc): undefined reference to `Py_Initialize'
main.cpp:(.text+0x30): undefined reference to `boost::python::import(boost::python::str)'
/tmp/ccI8x97b.o: In function `boost::python::api::object::object()':
main.cpp:(.text._ZN5boost6python3api6objectC2Ev[_ZN5boost6python3api6objectC5Ev]+0xd): undefined reference to `_Py_NoneStruct'
/tmp/ccI8x97b.o: In function `boost::python::api::const_attribute_policies::get(boost::python::api::object const&, char const*)':
main.cpp:(.text._ZN5boost6python3api24const_attribute_policies3getERKNS1_6objectEPKc[boost::python::api::const_attribute_policies::get(boost::python::api::object const&, char const*)]+0x26): undefined reference to `boost::python::api::getattr(boost::python::api::object const&, char const*)'
/tmp/ccI8x97b.o: In function `boost::python::str::str(char const*)':
main.cpp:(.text._ZN5boost6python3strC2EPKc[_ZN5boost6python3strC5EPKc]+0x1f): undefined reference to `boost::python::detail::str_base::str_base(char const*)'
collect2: ld returned 1 exit status

1 个答案:

答案 0 :(得分:4)

我认为我们真的需要你编写代码的方式。你有没有指定提升包括?

g++ code.cpp -lboost_python -lboost_system