Передача двумерного массива из С# в dll C++
От: Аноним  
Дата: 31.05.13 09:40
Оценка:
double[,] A = new double[N , N]; //создаю массив

Передаю следующим образом.
double* APt = &A[0, 0]

square_array(APt, N);

[DllImport("ConsoleApplication2", CallingConvention = CallingConvention.StdCall)] //объявление функции
extern unsafe static void square_array(double* arrA, int lengthA);

extern "C" __declspec ( dllexport ) void _stdcall square_array(double* arrA, int lengthA)
{

}

Вопрос в следующем: правильно ли я его передаю и как его правильно принять? Потому что сколькими способами не пробовал, результат всегда неверный.
Re: Передача двумерного массива из С# в dll C++
От: Kubyshev Andrey  
Дата: 31.05.13 13:40
Оценка:
Не уверен что даблы и там и там в одном и том же формате...
Re: Передача двумерного массива из С# в dll C++
От: BrainSlug Израиль  
Дата: 31.05.13 16:32
Оценка:
надо посмотреть как передаются multidimensional array — например http://msdn.microsoft.com/en-us/library/z6cfh6e6.aspx . По моему (может и ошибаюсь) надо вручную маршалить(см. Marshal) — выделять память(Marshal.AllocHGlobal),получать указатель, копировать туда значения, и передавать указатель.
.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.