Поддержание объекта Python при встраивании в C - PullRequest
0 голосов
/ 07 октября 2010

Из-за рефакторинга / доработки на контроллере мне пришлось встроить интерпретатор Python в приложение на языке Си.Теперь я могу вызывать функции Python и передавать / получать объекты в Python.

Код Python - это контроллер для робота (в настоящее время моделируется), теперь для сравнения, который я делаю, теперь нужно использовать некоторый код на C.

Ранее код Python создавал объекты, считывал датчики, запускал управляющий код и записывал выходные данные в двигатели.Все это, за исключением управляющего кода, теперь необходимо выполнить на C. Проблема, с которой я столкнулся, заключается в том, что объекты, созданные в функции init (в python), которые, когда я запускаю управляющий код, больше не существуют.

Как лучше всего это решить?Моя идея состояла в том, чтобы вернуть контроллеры из функции init и сохранить ссылки на них в C, передавая ссылку на контроллер каждый раз, когда он вызывается.

Спасибо за любую помощь.

1 Ответ

1 голос
/ 07 октября 2010

Возможно, это не тот ответ, который вам нужен, но есть способы работы с C и Python, кроме встроенного интерпретатора в приложение C.

А именно, почему бы тебе не сделать обратное? Создавать библиотеки C для Python? Вы можете контролировать общий поток вашего приложения в Python, что намного удобнее, и вызывать код на С, когда вы считаете нужным.

Опять же, я на самом деле не обращаюсь к вашему актуальному вопросу, поэтому не стесняйтесь меня игнорировать.

...