je sais comment faire passer des integer, des doubles dans des DLL et les déclarer dans VBA.
Voici comment je fais:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
Declare Function n Lib "V:\finum" Alias "_N@8" (ByVal x As Double) As Double
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
namespace finum 
{	double N(double x);}

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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