je sais comment faire passer des integer, des doubles dans des DLL et les déclarer dans VBA.
Voici comment je fais:
Declare Function n Lib "V:\finum" Alias "_N@8" (ByVal x As Double) As Double
1 2
| namespace finum
{ double N(double x);} |
1 2 3 4 5
| #define double_dll __declspec(dllexport) double __stdcall
extern "C" {
double_dll N(double x){return finum::N(x) ;}
} |
Pour l'instant, rien de compliqué, par ce que se sont des types qui existent en C comme en VBA. Maintenant, quand on crée des classes en C, comment les déclarer dans VBA?
Par ex, j'ai crée une classe (incomplete) "matrice" dans C
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| class Matrice
{
Matrice(int largeur, int hauteur);
public:
Matrice():maLargeur(0),maHauteur(0){}
int maLargeur;
int maHauteur;
};
Matrice::Matrice(int largeur, int hauteur):maLargeur(largeur),maHauteur(hauteur){}
int main()
{
Matrice M;
M.maHauteur=10;
M.maLargeur=20;
} |
Comment faire pour déclarer cet objet dans les headers de la DLL?
Ne serait-ce que pour faire déclare une macro comme ceci:
#define double_dll __declspec(dllexport) double __stdcall
Partager