De Python à Embarcadero...

Fermé
momomm Messages postés 41 Date d'inscription dimanche 10 mars 2013 Statut Membre Dernière intervention 24 avril 2022 - 24 avril 2022 à 18:21
[Dal] Messages postés 6175 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 30 avril 2024 - 25 avril 2022 à 14:37
Plop ! Me revoila pour une question basique mais pourtant j'ai pas de réponse que j'comprenne...

J'ai fait une petit app sur Embarcadero RAD Studio (2010 ehhh oui...) PAS DELPHI (je sais pas si ça changes...)

Et une petite app en Python 3.9

Topo : Python fait son petit calcul, et a la fin j'ai une variable x= 'résultat'

Je voudrais, lors d'une fonction sur Embarcadero, faire appel a l'app Python (Python/h, pybind11 etc... ne marchent pas, j'ai l'erreur avec inttype.h et ça viendrait d'une compatibilité, ainsi soit-il) et récupérer x=résultat dans mon app C++ pour m'en servir a loisir !

Pour resumer j'aimerais un truc du genre :
- C++ : *code*
ShellExec ou autre (PythonApp)
- Python : *vieux calcul*
x=résultat
un genre de return x
- C++ : récupérer le return genre final=PythonFonction()
  • suite du code*


J'ai donc deux problèmes :
Primo : Comment je peux appeler mon app python ? Je peux exécuter, simple, shellexec, mais ce serait un process externe, je préfèrerais faire comme un appel de fonction

Secondo : Une fois la fonction appelé/fichier exécuté, comment j'en récupère le résultat dans une variable c++, en gros me l'approprier du py->c++

J'ai peut être mal choisi certains mots, ce n'est pas ma profession juste un hobby, soyez pas trop bourrins dans vos réponses svp :D

ET MERCI d'avance pour toutes réponses :D

2 réponses

momomm Messages postés 41 Date d'inscription dimanche 10 mars 2013 Statut Membre Dernière intervention 24 avril 2022 1
24 avril 2022 à 20:37
J'ai répondu moi même a ma question : Je me sert d'un fichier txt temporaire banal, la fonction python écrit dedans, le c++ reprends, éventuellement clean etc...

DONC Sujet auto-résolu, mais des éclaircissement sont toujours appréciés, clin d'œil padiskret
0
[Dal] Messages postés 6175 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 30 avril 2024 1 083
Modifié le 25 avril 2022 à 14:51
Salut momomm,

J'ai fait une petit app sur Embarcadero RAD Studio (2010 ehhh oui...)

(...)

Python/h, pybind11 etc... ne marchent pas, j'ai l'erreur avec inttype.h et ça viendrait d'une compatibilité


inttype.h est un entête standard du langage C qui est présent sur les compilateurs conformes à la norme C11 adoptée en 2011. Tu dois disposer d'un compilateur plus récent supportant cette norme pour compiler ton code.

Sous Windows, tu peux obtenir une version récente du compilateur gcc (avec le portage MinGW), supportant ce standard. C'est un logiciel libre. La version actuelle de l'EDI Codeblocks (également un logiciel libre) te permet de télécharger une version de Codeblocks dotée de MinGW 8.1.0. Ce n'est pas la plus récente des versions, mais elle l'est suffisamment pour supporter C11 (en incluant l'option de compilation -std=c11 dans les paramètres).
http://www.codeblocks.org/downloads/binaries/
4ème lien (codeblocks-20.03mingw-setup.exe)

Sinon, Embarcadero a repris le développement du logiciel libre DevC++ (Embarcadero Dev-C++), qui inclue aussi une version de MinGW récente (une version 9.2.0) :
https://www.embarcadero.com/fr/free-tools/dev-cpp
Je n'ai pas encore testé leur version de DevC++, mais si je me fie à la version de MiGW qu'ils incluent, cela devrait aussi permettre une compilation de code C11.

Sur le plan du code pour faire ce genre de choses, tu as un exemple complet dans la doc Python qui semble correspondre à ton cas (en C toutefois) :

https://docs.python.org/3/extending/embedding.html#pure-embedding

mais peut-être avais-tu déjà cette info.

Dal
0