[C++]Récupérer une classe retournée par un exe

infodaoudi Messages postés 117 Date d'inscription vendredi 10 février 2006 Statut Membre Dernière intervention 30 mars 2012 - 28 mars 2012 à 12:15
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 - 30 mars 2012 à 20:12
bonjour,
j'ai un programme qui contient une fonction principale
#pragma comment(linker,"/entry:LoadingParams") 
EParams LoadingParams(char *arg1, char *arg2)
{
   //traitement
    EParams  aa;
 
  return aa;
 
}

1. je souhaite appeler l’exécutable de ce programme dans un programme externe, je fais comment? existe-il des fonctions pour ça (je suis sous windows)
2) mon programme doit théoriquement retourner un objet de type EParams (la fonction principale est loadingParams() et non pas main()), comment puis-je récupérer cet objet dans un programme externe?
3) si ma fonction EParams LoadingParams(char *arg1, char *arg2)contient une variable de type EParams comme paramètre d'entrée:
EParams LoadingParams(char *arg1,  EParams aa);

comment peut-on appeler l’exécutable correspondant dans un programme externe??

Merci pour toute proposition

5 réponses

cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
28 mars 2012 à 14:51
Bonjour.

1. je souhaite appeler l’exécutable de ce programme dans un programme externe, je fais comment? existe-il des fonctions pour ça (je suis sous windows)

shellexecute ?

2) mon programme doit théoriquement retourner un objet de type EParams (la fonction principale est loadingParams() et non pas main()), comment puis-je récupérer cet objet dans un programme externe?

Ce n'est pas parce que tu renommes la fonction "main" en "LoadingParams", que tu peux retourner autre chose qu'un entier... Un programme retourne un entier, point barre. Tu ne pourras jamais retourner autre chose, quelque soit la bidouille que tu entreprends.

3) si ma fonction EParams LoadingParams(char *arg1, char *arg2)contient une variable de type EParams comme paramètre d'entrée, comment peut-on appeler l’exécutable correspondant dans un programme externe 

On ne peut pas, tout simplement. La fonction main, quelque soit le nom donné, prend un "int + char**" et retourne un "int". Pas d'alternative.

________________________________________________________________________
Historique de mes créations, et quelques articles:
[ http://0217021.free.fr/portfolio http://0217021.free.fr/portfolio]
Merci d'utiliser Réponse acceptée si un post répond à votre question
0
infodaoudi Messages postés 117 Date d'inscription vendredi 10 février 2006 Statut Membre Dernière intervention 30 mars 2012
28 mars 2012 à 16:12
Bonjour,
shellexecute fera l'affaire je pense, mais c'est bien dommage qu'on ne peux pas retourner autre chose que int, il faut que je cherche une autre solution
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
29 mars 2012 à 17:23
Precisions:
Quand on définit la fonction /entry, par force ce sera:
void funcEntryPoint(VOID)
Il ne peut y avoir aucun param ni retour car on zappe le CRT qui fait d'ordinaire ce travail:
- appel de ExitProcess(dwRetour) qu'il faut absolument appeler soi meme dans le code de la fonction.
- parser la ligne de commande (si besoin) en appelant GetCommandLine().

ciao...
BruNews, MVP VC++
0
infodaoudi Messages postés 117 Date d'inscription vendredi 10 février 2006 Statut Membre Dernière intervention 30 mars 2012
30 mars 2012 à 12:52
Precisions:
Quand on définit la fonction /entry, par force ce sera:
void funcEntryPoint(VOID)

pourquoi, ça compile sans erreur quand je mets un type de retour!!

Il ne peut y avoir aucun param ni retour car on zappe le CRT qui fait d'ordinaire ce travail:
- appel de ExitProcess(dwRetour) qu'il faut absolument appeler soi meme dans le code de la fonction.
- parser la ligne de commande (si besoin) en appelant GetCommandLine().

je peux avoir plus de détails sur ces deux derniers points??
Merci
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
30 mars 2012 à 20:12
Compiler c'est obtenir un binaire executable, que ce binaire tourne sans planter et qu'il donne le résultat escompté est une toute autre affaire.
Avec les 2 noms de fonctions API, google te mènera sur MSDN où tu auras tous les détails.

ciao...
BruNews, MVP VC++
0
Rejoignez-nous