Python: C++ 扩展返回多个值
Python: C++ extension returning multiple values
我正在为 python 脚本编写一个 C++ 扩展,并且想要 return 多个值,就像我们在 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++ return 多个值?
编辑:
这是我的 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。请参阅 this page.
上的示例
我正在为 python 脚本编写一个 C++ 扩展,并且想要 return 多个值,就像我们在 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++ return 多个值?
编辑:
这是我的 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。请参阅 this page.
上的示例