2015-05-07 2 views
2

У меня возникла проблема с запуском библиотеки python от Boost. Мой кодОшибка связи с boost :: python

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

namespace python=boost::python; 

int main(int argc, char const *argv[]) 
{ 
    Py_Initialize(); 

    python::dict global; 

    return 0; 
} 

Я пробовал много и ближе я к рабочей программе является связывающей ошибкой с усилением:

$ gcc -c $(python2.7-config --cflags) bpt.cpp    
cc1plus: warning: command line option ‘-Wstrict-prototypes’ is valid for C/ObjC but not for C++ [enabled by default] 
$ gcc bpt.o $(python2.7-config --ldflags) -o bpt 
bpt.o: In Funktion `dict': 
/usr/include/boost/python/dict.hpp:89: Nicht definierter Verweis auf `boost::python::detail::dict_base::dict_base()' 
collect2: error: ld returned 1 exit status 

Я установил подталкивание через APT-получить (libboost-все-Dev), поэтому gcc должен найти его, не так ли? Я знаю, что bjam является предпочтительным способом компиляции программ с использованием boost :: python, но поскольку я просто хотел интерпретатор python для создания графиков, я не хотел запускать Jamfile и boost-build.jam и так далее. Итак, что мне нужно сделать, чтобы связать себя с библиотекой?

+2

Boost.Python - это не только заголовок, вам также необходимо установить ссылку на библиотеку. Попробуйте добавить '-lboost_python' в командную строку gcc. – Praetorian

+0

Спасибо, это флаг, который мне не хватало. Не могли бы вы указать, где я мог бы найти это самостоятельно? – Philipp

+0

Насколько я знаю, CMake может это сделать и для вас. См. Http://stackoverflow.com/a/5238644/147808. – olovb

ответ

3

Как преторианцы говорят, что вам нужно связаться с соответствующей библиотекой.

Добавить -lboost_python в командной строке:

gcc bpt.o -lboost_python $(python2.7-config --ldflags) -o bpt 

К сожалению, документация подталкивание-питон не очень понятно, по этому вопросу, но есть общая инструкция для повышения о том, как связать со своими библиотеками: how to link to a boost library ,

Связывание необходимо, когда вы используете библиотеку, которая не является только заголовком.

Смежные вопросы