Faire passer une structure à une DLL C
Bonjour à tous,
C'est mon tout premier post ! J'ai besoin de faire passer une structure de VBA vers une DLL que j'ai programée.
Je me suis basé sur le tutoriel http://rp.developpez.com/vb/tutoriels/dll/.
J'ai voulu tester la procédure avec un script simple, une structure élémentaire et une DLL aussi simple pour pouvoir étendre à des DLL et scripts plus complexes.
Voici le script VBA :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
|
Private Type udt
a As Long
b As Long
End Type
Private Declare Sub Additionne Lib "test.dll" (ByRef usertype As udt)
Sub CommandButton1_Click()
Dim usertype As udt
usertype.a = 2
usertype.b = 3
Additionne (usertype)
Range("tota").Value = usertype.a
Range("totb").Value = usertype.b
End Sub |
Le code C de ma dll est repris ci-dessous :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
|
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define EXPORT __declspec(dllexport) // définit la macro EXPORT
typedef struct UDT{
int a;
int b;
};
void EXPORT__stdcall Additionne(struct UDT usertype);
void __stdcall Additionne(struct UDT *usertype)
{
usertype->a = 10;
usertype->b = 20;
return usertype;
}; |
Je n'ai pas mis le fichier *.def qui permet d'exporter les fonctions en les renommant.
Merci d'avance pour votre aide.
PS : je ne savais pas si je devais poster ceci dans la rubrique VBA ou C.