我要实现的目标是- C ++ DLL搜索蓝牙设备,找到一个实例化一个类并填充新对象。这需要进行序列化,通过命名管道发送到具有线程从管道读取并更新UI的调用C#DLL。通过管道发送字符串可以正常工作,例如SendDataToPipe(_T(“ Phone \ n”));但是我将需要更改参数类型以处理类。不确定如何获取序列化结果以及如何通过管道发送结果。这个链接Serialize in C++ then deserialize in 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;
}
}