То, что я пытаюсь достичь, это -
C ++ DLL выполняет поиск устройств Bluetooth, когда находит один экземпляр класса и заполняет новый объект. Это должно быть сериализовано, отправлено по именованному каналу в вызывающую C # DLL, которая имеет поток, который читает из канала и обновляет пользовательский интерфейс. Отправка строки по каналу работает нормально, например SendDataToPipe (_T ("Phone \ n")); но мне нужно будет изменить тип параметра для обработки класса. Не уверен, как получить сериализацию и отправить результат по каналу. Эта ссылка Сериализация в C ++, а затем десериализация в C # выглядит хорошо для последней части моей головоломки. Модераторы, если это просто и непонятно, просто заблокируйте их, и я попробую еще раз. Благодарю.
UINT SendDataToPipe(LPTSTR data)
{
DWORD numBytesWritten = 0;
BOOL result = WriteFile(pipe, data, _tcslen(data) * sizeof(TCHAR), &numBytesWritten, NULL);
if (result)
return numBytesWritten;
else
return -1;
}
В заголовочном файле
class CFoundDevice : public CObject
{
public:
CFoundDevice();
~CFoundDevice();
DECLARE_SERIAL(CFoundDevice);
public:
CString fdtype;
CString fdname;
protected:
public:
virtual void Serialize(CArchive& ar);
protected:
};
В файле cpp
#include "stdafx.h"
#include "FoundDevice.h"
IMPLEMENT_SERIAL(CFoundDevice, CObject, 1)
CFoundDevice::CFoundDevice()
{
fdtype = "";
fdname = "";
}
CFoundDevice::~CFoundDevice()
{
}
void CFoundDevice::Serialize(CArchive& ar)
{
DWORD dwVersion = 0x00000000;
if (ar.IsStoring())
{
ar << dwVersion;
ar << fdtype;
ar << fdname;
}
else
{
ar >> dwVersion;
ar >> fdtype;
ar >> fdname;
}
}