Bonjour,
Voici mon problème:
J'aimerais appeler une fonction dans une DLL C++ en lui passant un tableau de string, et que la DLL me remplisse ce tableau avec des string.
Pour résumer, voici ce que je voudrais faire en VB:
Dim tableau() as String
'Le tableau est vide
fctDLL( tableau )
'Le tableau a été rempli et contient n strings
MsgBox tableau(0)
MsgBox tableau(1)
...
Après avoir pas mal cherché, j'en ai conclu qu'il fallait utiliser les SAFEARRAY pour faire ça. Par contre, j'ai aussi lu quelque par qu'il fallait utiliser une DLL COM. Quelle est la différence entre une DLL COM et non COM ? La DLL doit-elle être managé pour que cela marche ?
Pour l'instant, je déclare la fonction de la DLL comme suit :
Declare Function fctDLL Lib "laDLL.dll" (ByRef tableau() As String) As Int32
Le prototype en C++ dans la DLL est le suivant :
int __stdcall fctDLL(SAFEARRAY** tableau)
Pendant mes recherches, je suis tombé sur cet exemple :
http://rp.developpez.com/vb/tutoriels/dll/#L11
Il ne fonctionne pas, car SafeArrayAccessData me renvois DISP_E_ARRAYISLOCKED
Auriez-vous une idée ?
Merci,
Pyou