Я пытаюсь передать массив из VB в библиотеку написанную на С.
код VB:
- Код: Выделить всё
Private Declare Function high1 Lib "DLLTest.dll" (ByRef array() As Double) As Double
Private Sub main()
'MsgBox ReturnTen
'MsgBox AddVals(10, 10)
'MsgBox areacircle(30.2)
Dim mass() As Double
ReDim mass(3)
mass(0) = 3.1
mass(1) = 2.5
mass(2) = 7.89
mass(3) = 1.55
MsgBox high1(mass)
End Sub
Код DLL на С:
- Код: Выделить всё
double __stdcall high1(double array1[])
{
int exchange;
double temp;
int countval = 3;//sizeof(array);
do
{
exchange = 0;
for (int n = 1; n < (countval-1); n++)
{
if (array[n] < array[n+1])
{
temp = array[n];
array[n] = array[n+1];
array[n+1]=temp;
exchange = 1;
}
}
}while (exchange !=0);
return(array1[0]);
}
Даже более того, заменив на :
- Код: Выделить всё
double __stdcall high1(double array[])
{
return(array[0]);
}
мне выдается совершенно левое число.
С передачей обычных переменных таких путаниц нет. Только с массивами.
Не могли бы вы подсказать, в чем может быть проблема?