DLL en VC++ avec tableau en parametres ?

JoePatent Messages postés 171 Date d'inscription jeudi 30 janvier 2003 Statut Membre Dernière intervention 20 juillet 2008 - 24 nov. 2003 à 21:37
JoePatent Messages postés 171 Date d'inscription jeudi 30 janvier 2003 Statut Membre Dernière intervention 20 juillet 2008 - 24 nov. 2003 à 22:48
http://www.joepatent.comJoe Patent

Je me suis fait une DLL en VC++ qui est appelé par une application en VB 6.0

Tout fonctionne bien sauf pour... Les tableaux.
Voici le code en VC++

void _stdcall trierTableau (int *t[])
{ *t[1] = 999; }

Voici l'instanciation en VB et le code d'appel

Private Declare Sub trierTableau Lib "calend.dll" (ByRef ttt() As Long)

Private Sub Command1_Click()
Dim z(10) As Long

z(1) = 12
z(2) = 23
z(3) = 9
z(4) = 1
z(5) = 6

MsgBox z(1) & " " & z(2) & " " & z(3) & " " & z(4) & " " & z(5)
Call trierTableau(z())
MsgBox z(1) & " " & z(2) & " " & z(3) & " " & z(4) & " " & z(5)

J'obtiens une erreur que le tableau ne peut etre "written" et vb se ferme sauvagement sans demander son reste.

Comment fait-ton pour passer un tableau de chiffre a une DLL ... Merci de vos conseil.

5 réponses

JoePatent Messages postés 171 Date d'inscription jeudi 30 janvier 2003 Statut Membre Dernière intervention 20 juillet 2008
24 nov. 2003 à 21:41
0
jockos Messages postés 321 Date d'inscription dimanche 22 octobre 2000 Statut Membre Dernière intervention 14 mai 2005 2
24 nov. 2003 à 22:09
Il faut utiliser le type SAFEARRAY pour le paramètre de ta fonction C++.

Il faut un pointeur de pointeur sur un SAFEARRAY qui est une sorte de structure de données...

SAFEARRAY ** t

Renseigne toi sur Google pour avoir plus de détails car je ne peux pas t'en dire plus...

Bon courage...
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
24 nov. 2003 à 22:33
void __stdcall trierTableau(int *base, unsigned *num);
Voila ce que tu dois prendre dans ta dll et NENNI SAFEARRAY ou autre lenteur.
Du cote VB:
Declare Sub Lib trierTableau "SpeedVb.dll" (pArray As Long, nElem As Long)
et tu l'appelles ainsi
trierTableau lArray(0), 501
en passant l'adresse de l'elem 0 a la dll.
BruNews, ciao...
0
JoePatent Messages postés 171 Date d'inscription jeudi 30 janvier 2003 Statut Membre Dernière intervention 20 juillet 2008
24 nov. 2003 à 22:45
http://www.joepatent.comJoe Patent

Ta solution semble excellente. Simple et rapide. Mais je fais comment pour acceder au element du tableau en C++ et connaitre la fin du tableau etc...

Merci !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
JoePatent Messages postés 171 Date d'inscription jeudi 30 janvier 2003 Statut Membre Dernière intervention 20 juillet 2008
24 nov. 2003 à 22:48
http://www.joepatent.comJoe Patent

ca fonctionne super bien !

Tu es genial !

non! non! Pas de fausse modestie ! Tu es tres tres fort !

oui ! oui ! oui! Tres tres fort !
0
Rejoignez-nous