Livermore
Messages postés7Date d'inscriptionjeudi 28 juillet 2005StatutMembreDernière intervention23 août 2005
-
18 août 2005 à 18:46
Livermore
Messages postés7Date d'inscriptionjeudi 28 juillet 2005StatutMembreDernière intervention23 août 2005
-
23 août 2005 à 15:00
Bonjour,
Je passe un projet VB6 en VB.Net et je bloque sur le pb suivant:
dans vb6 je declare mon acces dll comme suivant:
Public Declare Function maFunc Lib "MaDLL.dll" Alias "dllSumMat" (ByRef t1() As Double, ByRef t2() As Double, ByRef Result() As Double) As Integer
et l'appel se fait nickel
la fonction (qui est une somme de matrice t1 et t2) me renvoie un t3 dans les regles.
La dll (c++) recupere les tableaux en type safearray **
Quand je passe en vb.net je passe par une declaration dllimport avec le namespace system.runtime.interopservices et j'arrive a "toucher" la dll.
Si j'appelle une function de ma dll simple (pas de param) je recupere la valeur en return de la dll.... Jusque la tout va bien....
des que j'envoie un tableau en param (ce qui m'interesse pour la somme de matrice) la dll c++ ne reconnait plus rien a rien. Elle trouve une dimension de 0 pour le tableau récupéré et ne fait donc rien...
comment m'en sortir....????
peut etre une piste:
en vb6 je peux passer une matrice (dimension 2) avec t1() en param (comme ci dessus)
mais avec vb.net je suis obligé de definir t1(,) en param pour qu'il compile (dans ma declaration dllimport).
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 18 août 2005 à 23:20
int dllSumMat(double *pt1, double *pt2, double *pres, DWORD nelems);
n'irait pas aussi bien ?
et plus besoin de safearray, ne fera que gagner en vitesse.
Appelant devra fournir tableau *pres, que ça à changer.
Livermore
Messages postés7Date d'inscriptionjeudi 28 juillet 2005StatutMembreDernière intervention23 août 2005 19 août 2005 à 11:01
ok merci mais ca m'oblige a changer le code dll....
vu que j'ai 34 fonctions du type sumMat j'aurai préféré avoir un code vb.net adapté (en vb6 ca marche tres bien)....