SAFEARRAY dll en c utilisée en vba
Bonjour à tous,
J'aimerais utiliser une dll écrite en c dans du vba.
J'ai parcouru ce tuto:
http://rp.developpez.com/vb/tutoriels/dll/
mais je n'arrive pas à appliquer cette histoire de SAFEARRAY et je ne suis même pas sur qu'il faille l'utiliser...
le truc c'est que j'ai une fonction en c qui doit recevoir une structure contenant un tableau dynamique de chaine de caractères.
en c j'ai donc:
Code:
1 2 3 4 5 6 7 8
| typedef struct Stops Stops;
struct Stops{
char stopId[7];
size_t numberOfPicturesPath;
char** picturesPath;
};
int __stdcall TestStruct(Stops* stopList); |
où la fonction TestStruct ajoute des chaines dans picturesPath et chaque ajout incrémente numberOfPicturesPath...
et en vba j'ai donc écrit ceci:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| Private Declare Function TestStruct Lib "Machin.dll" (ByRef stopList As Stops) As Long
Type Stops
stopId As String * 7
numberOfPictures As Long
pictures() As String
End Type
(...)
Private Sub TestMachin()
Dim stopList As Stops
Dim result As Long
result = TestStruct(stopList)
(...) |
Tel quel, le code s'exécute jusqu'au return de la fonction TestStruct dans laquelle stopList se remplit bien comme je veux mais une foi le return fait, access se gaufre complètement (fermeture + demande d'envois d'un rapport d'erreur...)
que dois-je faire?
j'imagine un truc du genre réécrire la structure du genre?:
Code:
1 2 3 4 5 6
| typedef struct Stops Stops;
struct Stops{
char stopId[7];
size_t numberOfPicturesPath; //ceci deviendrait inutile?
SAFEARRAY *picturesPath;
}; |
mais alors il faut réécrire toutes les fonctions utilisant la structure?