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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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