This question already has answers here:
How to wrap a char* buffer in a WinRT IBuffer in C++
(2个答案)
3年前关闭。
如何在通用Windows(C++ / CX)中实现IBufferByteAccess和IBuffer?
根据MSDN:
下面的例子:
IBuffer可以,但是我在IBufferByteAccess上遇到错误,即C++ / CX映射引用类只能从另一个引用类或接口(interface)类派生。
当我删除参考:
IBufferByteAccess可以,但是我从IBuffer中收到错误,即标准类不能从C++ / CX类派生。
在头文件中,我不包含任何内容,在源文件中,我仅包含已找到here的头
我还发现here这个 header 只是我需要包括的东西。
问题是(我认为)IBufferByteAccess不是引用类,而是从公共(public)IUnknown派生的结构。是否有我不知道的带有ref类/接口(interface)的另一个定义IBufferByteAccess的头文件?
(2个答案)
3年前关闭。
如何在通用Windows(C++ / CX)中实现IBufferByteAccess和IBuffer?
根据MSDN:
下面的例子:
ref class BufferWrapper sealed :
public Windows::Storage::Streams::IBufferByteAccess,
public Windows::Storage::Streams::IBuffer
{
public:
// Inherited via IBufferByteAccess
virtual HRESULT QueryInterface(REFIID riid, void ** ppvObject) override;
virtual ULONG AddRef(void) override;
virtual ULONG Release(void) override;
virtual HRESULT Buffer(byte ** value) override;
// Inherited via IBuffer
virtual property unsigned int Capacity;
virtual property unsigned int Length;
}
IBuffer可以,但是我在IBufferByteAccess上遇到错误,即C++ / CX映射引用类只能从另一个引用类或接口(interface)类派生。
当我删除参考:
class BufferWrapper :
public Windows::Storage::Streams::IBufferByteAccess,
public Windows::Storage::Streams::IBuffer
IBufferByteAccess可以,但是我从IBuffer中收到错误,即标准类不能从C++ / CX类派生。
在头文件中,我不包含任何内容,在源文件中,我仅包含已找到here的头
#include <robuffer.h>
我还发现here这个 header 只是我需要包括的东西。
问题是(我认为)IBufferByteAccess不是引用类,而是从公共(public)IUnknown派生的结构。是否有我不知道的带有ref类/接口(interface)的另一个定义IBufferByteAccess的头文件?
最佳答案
所以基本上我已经找到了我问题的答案。我需要的是将char *缓冲区包装在winrt对象中。在此堆栈溢出问题的答案中可以找到如何做到这一点:How to wrap a char* buffer in a WinRT IBuffer in C++
关于c++ - 如何在ref密封类中实现IBuffer和IBufferByteAccess? (C++/CX),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45757698/
10-09 13:42