Passage de données entre deux executables
Bonjour à tous !!!
Voilà en fait pour résumer grossièrement j'ai à ma disposition deux exécutables A et B. Je réponds tout de suite qu'il n'y a aucun moyen de passer par des dépendances exe/dll, car il y a des problèmes d'incompatibilité avec les dlls utilisées par les deux zigotos :cry:
L'exécutable A appelle de temps en temps l'exécutable B pour accomplir une tâche particulière. Auparavant cela suffisait amplement, car l'exécutable B ne renvoyait comme retour qu'un booléen true ou false pour spécifier si le calcul s'était bien déroulé ou non.
Le souci est désormais que l'exécutable A a besoin d'objets qui sont construits à la fin de l'exécution de B.
L'inconvénient c'est que le main de B ne peut renvoyer rien d'autre qu'un int, et bien évidemment il faut envoyer beaucoup plus.
Voici un exemple concret de ce que je voudrais obtenir (je suis sous Windows):
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| ///
/// main.cpp de A.exe
///
#include <iostream> // main
#include <sstream> // ostringstream
int main()
{
const int argument = 3;
std::ostringstream buffer;
buffer << "B.exe \"" << argument << "\"";
int resultat = system(buffer.str().c_str()); // appel de l'exécutable B, en lui passant en paramètre "agument"
// y a t'il un moyen de faire un "MyObject my_object = system(buffer.str().c_str()); ?
} |
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| ///
/// main.cpp de B.exe
///
#include <iostream> // main
#include "MyObject.h"
int main(int argc, char* []argv)
{
if(argc != 2)
{
std::cerr << "Erreur: nombre d arguments incorrect" << std::endl;
return EXIT_FAILURE;
}
MyObject my_object = do_something(argv[1]);
// Y a t'il un moyen de faire un "return my_object; " ??
} |