Bonjour,

Je rencontre un problème en voulant utiliser des structure an argument de fonction entre une dll C++ et le VBA.
J'utilise visual studio 2010.

Code C++
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 
struct ms
{
	int a;
	double b;
};
 
__declspec(dllexport) double __stdcall  Cpp_Test(ms *i)
{
	return i->a + i->b;
}
Code VBA
Code vba : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
Private Declare PtrSafe Function Cpp_Test Lib "MyDLL.dll" (i As ms) As Double
 
Type ms
    a As Long
    b As Double
End Type
 
Sub Test()
    Dim i As ms
    i.a = 12
    i.b = 3.14
    MsgBox Cpp_Test(i)
End Sub

Cela ne marche pas car je perd ma valeur de b. J'ai le sentiment qu'il y a un problème d'alignement et je n'arrive pas à le régler.
J'ai essayé d'utiliser le mot clef: sur ma structure mais ça ne change rien.

Auriez-vous une idée du problème et comment le résoudre s'il vous plaît?

Merci!