Я пишу расширение C ++ для скрипта Python и хочу вернуть несколько значений, как мы можем сделать в функции Python.
Простой пример в Python:
def test():
return 0,0
кортеж похоже самый близкий ответ
#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>
Кто-нибудь знает, могу ли я вернуть несколько значений с помощью C ++?
РЕДАКТИРОВАТЬ:
Это мой файл 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"]
)
])
Кажется, вы используете boost-python. Затем следует использовать boost :: python :: tuple, а не std :: tuple. Смотрите примеры на эта страница.
Других решений пока нет …