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:
où la fonction TestStruct ajoute des chaines dans picturesPath et chaque ajout incrémente numberOfPicturesPath...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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);
et en vba j'ai donc écrit ceci:
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...)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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) (...)
que dois-je faire?
j'imagine un truc du genre réécrire la structure du genre?:
mais alors il faut réécrire toutes les fonctions utilisant la structure?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 typedef struct Stops Stops; struct Stops{ char stopId[7]; size_t numberOfPicturesPath; //ceci deviendrait inutile? SAFEARRAY *picturesPath; };
Partager