Кто -нибудь, у кого есть опыт встраивания CINT в приложение C ++?
-
29-09-2019 - |
Вопрос
я говорю о Рут Синт.
Я разрабатывал игру в C ++ Wich, использует Python для программирования ИИ. Как бы я ни любил Python и насколько легко он делает программирование ИИ (генераторы и FP действительно сексуальны), он делает не тривиальные алгоритмы. так медленный.
Затем я вспомнил, что где -то читал о Cint и о том, как его можно встроить. Теперь мне нужна ваша помощь, чтобы решить, реализовать Cint в качестве альтернативной системы сценариев. С Python я использую Boost :: Python, Wich делает его почти безоговорочным, чтобы разоблачить классы и объекты Как только вы привыкнете к этому. Анкет Есть ли такая легкость с Cint?
Спасибо.
Решение
Я написал классы, составленные против ROOT, а затем обратился к ним непосредственно в интерпретаторе. Это легко, хотя все такие классы должны быть получены из TObject
. Анкет Чего я не знаю, так это то, является ли это требованием CINT или корневым требованием. Вам может быть лучше всего спросить Форум поддержки Roottalk Cint
Чтобы ответить на вопросы в комментариях:
- Вывод из
TObject
может быть подержанным: ваши классы могут быть получены из чего -то, полученного отTObject
, это просто должно быть ТОБАЙТ. - Root предоставляет инструмент (
makecint
) и некоторые макросы (ClassDef
иClassImp
) для поддержки интеграции вашего кода с интерпретированной средой выполнения: напишите свой CLA, выводящий его изTObject
; включитьClassDef
макро в заголовке иClassImp
Макро в исходном файле; бежатьmakecint
над кодом, чтобы генерировать всю утомительную интеграцию невесенность, затем составьте свой код и сгенерированный код для общего объекта (или, я полагаю, DLL в окне Windows); запустить переводчика; загрузить библиотеку с помощью.L
; и ваш класс полностью интегрирован с интерпретированной средой (завершение TAB будет работать и все это). Сборка может быть автоматизирована с помощьюmake
(и предполагаемые другие инструменты). ## Опять же, ## Я не знаю, сколько из этого принадлежит корни и сколько для Cint. Но это все с открытым исходным кодом, поэтому вы можете зацепить и адаптировать то, что вам нужно.