Chiunque abbia esperienza sull'integrazione CINT in un'applicazione C ++?
-
29-09-2019 - |
Domanda
Sto parlando di di ROOT CINT .
Ho sviluppato un gioco in C ++ Quale utilizza Python per la programmazione della IA. Per quanto io amo Python, e come è facile rende la programmazione della AI (generatori e FP sono davvero sexy), rende algoritmi non banali eseguiti così lento.
Poi mi sono ricordato che ho letto da qualche parte su CINT, e come può essere embedable. Ora ho bisogno del vostro aiuto per decidere se implementare CINT come un sistema di scripting alternativo. Con python uso io Boost :: Python, wich rende quasi unpainfull per esporre le classi e gli oggetti una volta ci si abitua ad esso . C'è una tale facilità con CINT?
Grazie.
Soluzione
Ho scritto classi compilate contro Root, per poi accedere direttamente nell'interprete. E 'facile, anche se tutte queste classi sono attesi dal risultato TObject
. Quello che non so è se questo è un requisito cint o di un requisito di ROOT. si potrebbe essere migliore fuori chiedendo sulla RootTalk CINT Support forum
Per affrontare le domande nei commenti:
- La derivazione da
TObject
può essere di seconda mano:. Vostre classi possono essere derivati ??da qualcosa di derivato daTObject
, è solo per essere un TObject - Root fornisce uno strumento (
makecint
) e alcune macro (ClassDef
eClassImp
) per il supporto all'integrazione il codice con l'ambiente di esecuzione interpretato: scrivere i tuoi clas derivanti daTObject
; includere la macroClassDef
nell'intestazione e la macroClassImp
nel file di origine; eseguiremakecint
sopra il codice per generare tutta la nonesense integrazione noioso, quindi compilare il codice e il codice generato per un oggetto condiviso (o, presumo, una DLL in un finestre scatola); avviare l'interprete; caricare la libreria con.L
; e la classe è completamente integrato con l'ambiente interpretato (completamento scheda funziona e tutto il resto). La build può essere automatizzato conmake
(e presumibili altri strumenti). ## Anche in questo caso, ## non so quanto di questo appartiene a ROOT e quanto cint. Ma è tutto open source, in modo da poter agganciare e adattare ciò che è necessario.