Передача массива Python в вектор C ++ с использованием Swig

У меня есть массив объектов в Python

[obj1, obj2, obj3]

и я хочу передать их в функцию C ++ для выполнения некоторых вычислений. Я использую SWIG, чтобы написать свой интерфейс. Тип класса передаваемого объекта уже определен в C ++.

Какой лучший способ сделать это?

15.12.2008 16:45:43
«лучший способ» с учетом каких ограничений? Разрешены ли внешние библиотеки, или вы хотите использовать специальные возможности Python?
Max Lybbert 15.12.2008 20:06:26
1 ОТВЕТ

Это зависит от того, написана ли ваша функция и не может быть изменена, в этом случае вам может понадобиться проверить документы Swig, чтобы увидеть, существует ли уже карта типов из PyList в std :: vector (я думаю, что она есть). Если нет, то взятие PyObject * в качестве аргумента функции и использование Python C API для работы со списками должно работать нормально. У меня до сих пор не было проблем с этим. Для самостоятельного документирования я рекомендую typedef'у PyObject * для некоторого ожидаемого типа, такого как "PythonList", чтобы параметры имели некоторое значение.

Это также может быть полезно:

Как выставить std :: vector <int> как список Python, используя SWIG?

2
23.05.2017 12:30:42