Как стать автором
Поиск
Написать публикацию
Обновить

Комментарии 11

У вашего кода нет форматирования! Пожалуйста, поправьте это.
Спасибо, поправил.
Спасибо, очень ценной дополнение!
Дополню, что для создания простых структур можно использовать модуль struct
спасибо, как-то не приходилось работать с данным модулем, посмотрю его детальнее.
А вот передача больших массивов данных, или еще лучше двумерных массивов данных, или даже двумерных массивов объектов.

А может быть просто взять numpy?
https://docs.scipy.org/doc/numpy/reference/c-api.html


Если ваш код должен работать с большими многомерными массивами, то numpy — это то, что нужно.

Да про numpy знаю, однако считаю, что он нужен для реально огромных массивов данных, например для анализа статистических данных или еще чего подобного. Когда речь идет о нескольких десятков объектов, у меня например было около шести десятков, то передавать их по одному абсолютно неадекватная задача, но и пристыковывать к проекту большую и тяжелую библиотеку только ради одной задачи передачи этих объектов в dll, без использования еще где либо — считаю слишком не рационально. Тот пример, что я привел, должен заполнить как раз ту середину, между минимумом элементов, которые можно передать отдельными параметрами и теми огромными массивами, где без numpy уже не обойтись.
Посмотрел Ваш материал, что бы дополнить свой. Только пришлось помучиться, как получить структуру обратно…
Ну для этого есть два варианта.
1. Создать структуру в python и передать указатель на нее одним из аргументов.
2. Создать структуру в коде C++ dll, и возвращать указатель на нее, но в таком случае надо не забывать и делать вторую функцию для удаления созданной структуры, чтобы не возникало утечек с памятью. В вашей статье вы возвращали указатель на созданный через new класс, но нигде потом не вызвали удаление данного класса из памяти. Но так как это в том контексте не особо важно было, я не стал указывать на это, но если вы хотите делать возвращение структуры по второму варианту, то надо не забывать освобождать выделенную память.
Ну да, поскольку делал как пример, то и забил на free. Надо бы дополнить.
В вашей статье привел в комментарии пример по типу вашего кода, как можно работать с созданными структурами в C, по указателю из python, надеюсь поможет
Благодарю, я уже почитал. Посмотрю подробнее в ближайшее время, про contents как раз и не знал )), вот и помучился.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации