Python: расширение C++, возвращающее несколько значений

Я пишу расширение С++ для скрипта Python и хочу вернуть несколько значений, например то, что мы можем сделать в функции Python.

Простой пример в питоне:

def test():
    return 0,0

tuple кажется наиболее близким ответом

#include <tuple>

std::tuple<int,int> test(void){
return std::make_tuple(0,0);
}

Но когда я его компилирую, он жалуется, что

TypeError: No to_python (by-value) converter found for C++ type: std::tuple<int, int>

Кто-нибудь знает, могу ли я вернуть несколько значений с помощью С++?

ИЗМЕНИТЬ:

Это мой файл setup.py.

#!/usr/bin/env python

from distutils.core import setup
from distutils.extension import Extension

setup(name="PackageName",
    ext_modules=[
        Extension("foo", ["foo.cpp"],
        libraries = ["boost_python"],
        extra_compile_args = ["-std=c++11"]
        )
    ])

person Zhongjun 'Mark' Jin    schedule 09.09.2016    source источник
comment
Если вы хотите вернуть определенный тип данных, например int или float, вы можете использовать массив или std::vector этого конкретного типа.   -  person Titas Chanda    schedule 10.09.2016
comment
Расширение Python C отстой ... попробуйте ctypes ... оно намного лучше и широко совместимо и не зависит от версии Python, но требует большего опыта работы с C / C ++.   -  person The Quantum Physicist    schedule 10.09.2016
comment
Как вы создаете расширение Python C++? Я не узнаю источник этой ошибки.   -  person Mark Tolonen    schedule 10.09.2016


Ответы (1)


Кажется, вы используете boost-python. Затем следует использовать boost::python::tuple, а не std::tuple. См. примеры на эта страница.

person fireant    schedule 10.09.2016