Crash sur un redim VBA et un appel COM C++
J'ai un problème lorsque je dimensionne un tableau dans une structure en VBA puis que j'envoi la structure à une fonction C++. Ça plante direct et impossible de voir quoique ce soit.
Code C++
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| typedef struct XData
{
int Count;
SAFEARRAY *X;
SAFEARRAY *Y;
} XData;
typedef struct T
{
BSTR s;
XData X;
} T;
typedef struct Input
{
SAFEARRAY *X;
} Input;
__declspec(dllexport) int __stdcall Cpp_D1(Input *in)
{
return 0;
} |
code VBA
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| Private Declare PtrSafe Function Cpp_D1 Lib "MyDLL.dll" (i As InputData) As Long
Private Type XData
Count As Long
X() As Double
End Type
Private Type T
s as string
X As XData
End Type
Private Type InputData
X() As T
End Type
Sub test()
Dim i As InputData
ReDim i.X(5)
ReDim i.X(0).X.X(10)
Call Cpp_D1(i)
End Sub |
Si je ne mets pas le string ça marche.
Si je ne redimensionne pas i.X(0).X.X(10) ça marche.
Je suis bloqué sur ce problème depuis plusieurs jours et je ne peux pas utiliser un autre schéma de déclaration de structure (je pense à la déclaration dans le .idl qui marche bien) car je dois avoir une compatibilité sous OS X.