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:
les changements appliqués à dz1 et dz2 sont bien passés à la variable utilisé comme argument.
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, }
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.
Jusqu'ici tout va bien.
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; }
Les vrais soucis commencent depuis que j'essaie de passer un char**.
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.
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; }
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![]()
Partager