импорт очереди из С++
От: agealex  
Дата: 03.09.07 13:17
Оценка:
ЗДраствуйте

вот кусок кода
1 ый вариант

...
#ifdef DRIVER_EXPORTS
#define DRIVER_API __declspec(dllexport)
#endif
DRIVER_API std::queue<UCHAR> qRecv ;
...
С#
[DllImport("C:/pockettest/Driver.dll")]
public static extern queue<byte> qRecv; -определение не верное как определить не знаю
2 ой вариант
С++
...
#ifdef DRIVER_EXPORTS
#define DRIVER_API __declspec(dllexport)
#endif
DRIVER_API bool DrvMsgSend(UCHAR buffer[],int DataSize)//возвращает указатель на первый элемент массива и длину самого массива

{
if(!qRecv.empty())
{
QElement = (qRecv.front()); //указатель на первый элемент
qRecv.pop();
MsgSize = sizeof(&QElement);
return 1;
}
return 0;
}

...
С#

[DllImport("C:/pockettest/Driver.dll")]
public static extern bool DrvMsgSend(byte buffer[],int DataSize);

Вопрос:
Есть очередь в длл написанной на с++ , в С# есть поток который опрашивает эту очередь и по заполнению берет от туда элемент и выполняет дальнейшие действия. В очереди хранятся массивы байт.
Как это реализовать? Если шарп сможет самостоятельно взть элемент из очереди или если нет то как по указателю на массив и его длине получить сам массив- может есть какой нить аналог memcpy из с++?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.