Пишу ком компонентик в шестой студии га с++
Вот описание кокласса на idl
[object, uuid(4DBC7694-B894-435e-A9C3-1DD34A4B5C01), dual,
helpstring("")]
interface IFilter : IDispatch
{
[id(0)] HRESULT SetData([in] VARIANT i_Data);
[id(1)] HRESULT GetFilteredData();
};
[uuid(FC251E98-D37E-4abe-9EE7-5E85F4DF054F), version(1),
helpstring("Filtration library")]
library Filtration{
importlib ("stdole32.tlb");
[uuid(3EAEECF8-167D-4d73-9025-C85B3CD9A30C)]
coclass Filter
{
[default] interface IFilter;
};
};
Соответственно из VB мне надо передать массив (метод SetData)
Djт код VB
Private Sub Command1_Click()
Dim Arr(0 To 10) As Double
Arr(0) = 0
Arr(1) = 1
Arr(2) = 2
Arr(3) = 3.3
Arr(4) = 4.6
Arr(5) = 7.77777
Arr(6) = 7777.77777
Arr(7) = 7.77777
Obj.SetData Arr
End Sub
При вызове ругается variable uses an automation type not supported in visual basic
Что я делаю не так и как правильно передавать массивы в с++ библиотеки?
Здравствуйте, Аноним, Вы писали:
А>А>Private Sub Command1_Click()
А> Dim Arr(0 To 10) As Double
А> Arr(0) = 0
А> Arr(1) = 1
А> Arr(2) = 2
А> Arr(3) = 3.3
А> Arr(4) = 4.6
А> Arr(5) = 7.77777
А> Arr(6) = 7777.77777
А> Arr(7) = 7.77777
А> Obj.SetData Arr
А>End Sub
А>
А>При вызове ругается variable uses an automation type not supported in visual basic
А>Что я делаю не так и как правильно передавать массивы в с++ библиотеки?
Попробуй объявить массив как:
Dim Arr(0 To 10, 0 To 0)
по-крайне мере в COM, написанном на С#, массивы только двумерные можно было передавать.