Bonjour à tous.
Je suis en train de développer une DLL, mais je ne suis pas très très calé en C.
Je dois écrire une fonction à laquelle je passe plusieurs paramètres, dont une chaîne.
Voilà le prototype :
En gros, je reçois une chaine dans sendBuffer. J'exécute une commande dans une autre DLL et je dois passer le résultat (aussi une chaine) dans receiveBuffer, et renvoyer la taille du résultat.
Code : Sélectionner tout - Visualiser dans une fenêtre à part DLLIMPORT int __stdcall SendReceive ( LPCSTR sendBuffer, LPSTR receiveBuffer);
Voilà le code, en gros.. Le problème maintenant...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 DLLIMPORT int __stdcall SendReceive ( LPCSTR sendBuffer, LPSTR receiveBuffer) { char * message; //Je vous épargne le code dans lequel j'appelle l'autre DLL //Je suis sûr que ça s'exécute bien, car ma chaine Message //est bien affectée au final receiveBuffer = message; return strlen(receiveBuffer); }
J'appelle cette fonction depuis un programme externe, fait en windev.
Je lui passe en paramètres la commande, et l'adresse de la chaine chaine qui doit contenir la réponse.
Pour ceux qui connaissent windev, j'appelle la fonction comme ça :
La fonction me retourne bien la taille de la chaîne, et elle est correcte. Seulement quand j'affiche le contenu de sReponse, bah j'ai rien... La chaîne est aussi vide que ma tête en ce moment ^^
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 Info(API("maDll.dll", "SendReceive", "OPEN", &sReponse) /*en windev, le & sert à passer une adresse, comme en C, mais les pointeurs n'existent pas à proprement parler*/
Je débute en C, j'ai bien regardé la FAQ et ça me semble correct, donc où est-ce que je pêche ??
Merci d'avance pour vos réponses
PS : les pointeurs, c'est super, mais c'est pas facile à utiliser, on a vite fait de s'y perdre au début![]()
Partager