Передача двумерных массивив в DLL и обратно - страница 2

 

Передается одномерный массив.

DLL:

MT4_EXPFUNC double __stdcall ArraySum( double arr[], const int n1, const int n2 )
{
	double sum = 0;
	for ( int i = 0; i < n1; i++ )
		for ( int j = 0; j < n2; j++ )
			sum += arr[ i * n2 + j ]; // т.е. sum += arr[ i, j ];
	arr[ 2 * n2 + 1 ] = -1.0; // arr[2][1] = -1.0
	return sum;
}

скрипт:

#import "Win32One.dll"
   double ArraySum( double &arr[][], int n1, int n2 );
#import

#define N1 4
#define N2 3

int start()
{
   double a[][N2];
   ArrayResize( a, N1 );
   double sum = 0;
   for ( int i = 0; i < N1; i++ )
   {
      for ( int j = 0; j < N2; j++ )
      {
         double value = i * 10 + j;
         a[ i, j ] = value; // запихиваем что-нибудь в массив
         sum += value;
      }
   }
   Print( "sum of array = " + sum );
   sum = ArraySum( a, N1, N2 );
   Print( "ArraySum returns value = " + sum );
   Print( "a[ 2, 1 ] (must be -1) = " + a[ 2, 1 ] );
   return(0);
}
лог:
2009.01.22 09:14:54 tempscript1 GBPJPY,H1: a[ 2, 1 ] (must be -1) = -1.00000000
2009.01.22 09:14:54 tempscript1 GBPJPY,H1: ArraySum returns value = 192.00000000
2009.01.22 09:14:54 tempscript1 GBPJPY,H1: sum of array = 192.00000000



 
pxx :

Спасибо. Придётся передавать одномерным если нельзя двумерным.