Padding mémoire VBA / C++
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:
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:
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:
Code:
__declspec(align(8))
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!