Passage de string d'une DLL C++ a un prog VB (.NET)

Signaler
Messages postés
50
Date d'inscription
samedi 28 février 2004
Statut
Membre
Dernière intervention
6 juin 2006
-
Messages postés
50
Date d'inscription
samedi 28 février 2004
Statut
Membre
Dernière intervention
6 juin 2006
-
Bonjour
Je souhaiterais passer une string d'une DLL c++ a un programme VB.

Voila ma fonction dans la DLL :
string _stdcall selectMom() 
{ 
ostringstream ost; 
mom = &(ga->getOldPop()->select()); 
ga->incStatsNumsel(1); 
ost << *mom; 
return ost.str().c_str(); 
}


et je declare cette fonction comme ceci dans le prob VB :
Public Declare Function selectMom Lib "schedule.dll" () As string


Le probleme, c'est qu'a l'execution de la fonction, j'ai une erreur... Les types string c++ et vb ne doivent pas etre les memes. Est ce que quelqun sait comment je pourrais faire ca ?

2 réponses

Messages postés
2676
Date d'inscription
vendredi 28 juin 2002
Statut
Membre
Dernière intervention
13 janvier 2016
14
salut

le type string n'est ni compatible VB6 ni VB.NET :
de plus une fonction C++ renvoie un pointeur vers la chaine que VB ne gère pas non plus. Il est conseillé de passer les chaine de carctères en paramètre de la fonction comme LPSTR.
de plus, il faut mieux renvoyé un DWORD comme valeur de retour car il sera alors renvoyé par valeur et non par référence

en C++ :
int MaFunc (LPSTR lpszChaine, int cbLength)
{
//...
lpszChaine = (LPSTR)ost.str().c_str();
// ou strcpy(lpszChaine,ost.str().c_str(),cbLength);
return 1;
}

dans VB :
public declare ansi function MaFunc(byval lpszChaine as string,byval cbLength as integer) as integer

voilà

ShareVB
Messages postés
50
Date d'inscription
samedi 28 février 2004
Statut
Membre
Dernière intervention
6 juin 2006

Merci beaucoup, je vais essayer ca.