Как импортировать модуль boost из C ++ в python? - PullRequest
0 голосов
/ 28 декабря 2018

Ниже приведен код C ++, который я хочу импортировать.

#include <boost/python.hpp>
#include <string>

/*
 * This is the C++ function we write and want to expose to Python.
 */
const std::string hello() {
    return std::string("hello, zoo");
}

/*
 * This is a macro Boost.Python provides to signify a Python extension module.
 */
BOOST_PYTHON_MODULE(zoo) {
    // An established convention for using boost.python.
    using namespace boost::python;

    // Expose the function hello().
    def("hello", hello);
}

Следующий код является скриптом Python.

import zoo     # In zoo.cpp we expose hello() function, and it now exists 
                  in the zoo module.

assert 'hello' in dir(zoo)   # zoo.hello is a callable.

assert callable(zoo.hello)   # Call the C++ hello() function from Python.

print zoo.hello()

Когда я пытаюсь запустить скрипт, я не получаю "hello, zoo" на терминале в качестве вывода.Где я делаю ошибку?

Ниже приводится сообщение об ошибке, которое я получаю:

импорт: не авторизован zoo' @ error/constitute.c/WriteImage/1028. ./visit_zoo.py: line 3: syntax error near unexpected token ('./visit_zoo.py: строка 3: `assert' привет'in dir (зоопарк)'

1 Ответ

0 голосов
/ 30 декабря 2018

Не забыли ли вы указать, что скрипт должен запускаться на Python, как я это сделал?

Вы можете включить исполняемый файл python в заголовок файла скрипта:

#!/usr/bin/env python2

и сделать файл исполняемым или вызвать скрипт с Python:

$ python <filename>
...