Passer un char** par référence
Bonjour,
J'essaie en ce moment d'écrire une DLL pour faire divers tests - notamment sur le passage d'arguments par référence. Sur des valeurs numériques, ca fonctionne parfaitement:
Code:
1 2 3 4 5 6
| extern "C" int __stdcall fonctionDivision (float& dz1, float& dz2)
{
dz1 = dz1/2;
dz2 = dz2/2;
RETURN 1,
} |
les changements appliqués à dz1 et dz2 sont bien passés à la variable utilisé comme argument.
J'ai commencé à avoir mon premier problème avec un char*... Du moins jusqu'à ce que je réalise qu'il ma fallait utiliser strcpy(); pour que les chqngements sur l'argument soient pris en compte lors de l'appel de la fonction.
Code:
1 2 3 4 5
| extern "C" int __stdcall HelloWorld (char* Hello)
{
strcpy(Hello, "HelloWorld");
return 1;
} |
Jusqu'ici tout va bien.
Les vrais soucis commencent depuis que j'essaie de passer un char**.
Code:
1 2 3 4 5 6 7 8 9 10
| extern "C" int __stdcall StringArray (char** Array)
{
char* temp[5];
temp[0] = "Demo Tool";
temp[1] = " ";
temp[2] = "v1";
temp[3] = "r2.504";
Array = temp;
return 1;
} |
Bien entendu, dans le code ci-dessus, aucun changement n'est pris en compte et si je lis la variable donnée en argument après l'appel de la fonction, elle est identique à son état précédent cet appel. Strcpy ne fonctionne pas non plus. J'ai essayé strcpy(*Array, temp[0]); mais je me retrouve avec une chaine aléatoire de caractères en sortie.
Quekqu'un squrqit-il m'expliquer comment construire mq fonction pour que la valeur char** Array soit passée à la variable utilisée pour l'appel de la fonction?
Merci d'avance :ccool: