IntPtr
От: Capitan_Blood  
Дата: 10.03.08 18:08
Оценка:
Доброго времени суток!
лиричесоке вступление:
имеется библиотека на managed c++, в этой библиотеке есть функция котоаря читает данные из сокета и должна заполнить такую вот структуру:
{
int size;
IntPtr ptr;
}

класс этой библы используется из проги на c#, и там происходит обрадщение к этим полям.

теперь о самой проблеме:
я написал вот такой код:

...
size — считаный размер
buf — считаный массив (BYTE* — unmanaged)
message[i] — результат работы функции — заполненая структуруа

array<Byte>^ tmp = gcnew array<Byte>(size);

pin_ptr<BYTE> tmpPtr = &tmp[0];
memcpy(tmpPtr, buf, size);
message[i])->ptr = (IntPtr)(tmpPtr);

delete[] buf;

и вроде бы всё замечательно — после считывания в массиве то что надо, после возрата в c# код тоже все ок, а вот до целевой функции уже доходит не то, где то потёрлось..

объясните как это по человечески сделать.. предложения отказатсья от библиотеки промежуточной не предалгать — огарнчиения такие(
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.