PB d'importation d'une fonction d'une DLL

cs_SylMat Messages postés 92 Date d'inscription mardi 19 novembre 2002 Statut Membre Dernière intervention 3 mai 2007 - 12 déc. 2006 à 17:16
ShareVB Messages postés 2676 Date d'inscription vendredi 28 juin 2002 Statut Membre Dernière intervention 13 janvier 2016 - 13 déc. 2006 à 10:38
Bonjour à tous,
J'aimerai savoir comment je dois déclarer une fonction,issue d'une dll EVC++, qui retourne un tableau de chaine...

J'ai fait ca dans mon code vb.net

<DllImport("maDLL", EntryPoint:="maFonction", CallingConvention:=CallingConvention.Winapi)> _
Shared Function maFonction(ByVal var As String) As String()
End Function

Au runtime j'ai une jolie Unsupported exception.

J'avoue être un peu (pas mal, vive le J2EE qui m'a ramoli le cerveau) rouillé en C++ donc le problème vient peut être du prototype de la fonction exportée en fait...

Quelqu'un aurait soit un exemple soit un lien svp?

Merci d'avance

Sylvain 
Admin de pdafr. sylmat@codes-sources.com
"Tant que mon patron croit qu'il me paye beaucoup, je lui fais croire que je travaille beaucoup"

1 réponse

ShareVB Messages postés 2676 Date d'inscription vendredi 28 juin 2002 Statut Membre Dernière intervention 13 janvier 2016 26
13 déc. 2006 à 10:38
salut,

à priori, je dirais que ca renvoie un pointeur vers un tableau de chaines et pas un tableau de chaine...

je dirais donc un truc dans le genre de :
<DllImport("maDLL", EntryPoint:="maFonction", CallingConvention:=CallingConvention.Winapi)> _
Shared Function maFonction(ByVal var As String) As IntPtr
End Function

puis utilisation de l'objet Marshal et de sa méthode statique Copy ou autres...

ensuite tout dépend de la manière dont tu connais la taille du tableau renvoyé, comment tu l'utilise...

sinon, il serait intéressant d'avoir la signature C++ de la méthode

un tuto sur le marshaling en VB.Net : http://www.sharevb.net/Les-API-en-VB-Net.html

ShareVB
0
Rejoignez-nous