Problème de dll

sebastienbro Messages postés 246 Date d'inscription dimanche 14 avril 2002 Statut Membre Dernière intervention 5 août 2004 - 11 mai 2003 à 17:46
ShareVB Messages postés 2676 Date d'inscription vendredi 28 juin 2002 Statut Membre Dernière intervention 13 janvier 2016 - 12 mai 2003 à 17:24
Bonjour,

j'utilise une dll fait en c++.

Un argument de la fonction est un type créer par l'utilisateur a laide de Type. Mais j'ai un problème. Les valeur qui arrive à la dll ne sont pas les bonnes, je ne sait pas si j'ai bien tout déclaré :

Ma form

Dim lOpt As lAboutBox

lOpt.Titre = "Winux"
lOpt.CopyRight = "2003 Winux Team"
lOpt.Description = "Rien"
lOpt.Version = "2.4.0.1"
lOpt.App = "Winux"
lOpt.Btn = "OK"
lOpt.Icone = Picture1.Picture.Handle

Call AboutBox(lOpt, Form1.hWnd)

et le module :

Public Type lAboutBox

Titre As String
CopyRight As String
Description As String
Version As String
App As String
Btn As String
Icone As Long

End Type

Declare Function AboutBox Lib "krnlwinux.dll" (ByRef Opt As lAboutBox, ByVal Handle As Long) As Boolean

Merci d'avance

\* -- Seb [[mailto:sebastienbro@aol.com Mail]] [Web] -- */

1 réponse

ShareVB Messages postés 2676 Date d'inscription vendredi 28 juin 2002 Statut Membre Dernière intervention 13 janvier 2016 26
12 mai 2003 à 17:24
salut

bon deja u ne peux pas passer un chaine de caractère de longueur dynamique. Il faut obligatoirement que ce soit dans le genre (chaine de longueur constante) : String * nb_carac

donc il faut que tu changes ta déclaration :

Public Type lAboutBox
Titre As String * 250
CopyRight As String * 250
Description As String * 250
Version As String * 250
App As String * 250
Btn As String * 250
Icone As Long
End Type

pourquoi 250 et pas 255 : eh bien parce que le type long qui suit les strings s'aligne sur des adresses mémoires multiples de 4

et dans ton code C++, un truc dans le genre
//je ne sais pas si char est unicode

typedef {
char[250] Titre
char[250] CopyRight
char[250] Description
char[250] Version
char[250] App
char[250] Btn
long Icone
} lAboutBox;

voila

ShareVB
0
Rejoignez-nous