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 : 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
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 : 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
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.