如何解决C ++ / WinRT将IVector <SomeStruct>返回到C#应用程序
我正在尝试将结构列表从C ++ / WinRT返回到C#。我收到的错误消息是:存根接收到错误的数据。
IDL:
namespace SampleComponents
{
[version(1.0)]
struct DateTimeInfo
{
Int32 Year;
Int32 Month;
Int32 Day;
Int32 Hour;
Int32 Minute;
Int32 Second;
Int32 Milliseconds;
};
[version(1.0)]
struct SampleStruct
{
String Name;
DateTimeInfo Created;
Int64 Amount;
};
[default_interface]
runtimeclass SampleRetrieval : ISampleRetrieval
{
SampleRetrieval();
}
[version(1.0)]
[uuid(aa11a991-7a39-4278-973b-9a73776d6519)]
interface ISampleRetrieval : IInspectable
{
HRESULT GetSamples([out,retval] Windows.Foundation.Collections.IVector<SampleStruct>** result);
}
}
SampleComponents.h:
#include "SampleComponents.g.h"
using namespace winrt::SampleComponents;
namespace winrt::SampleComponents::implementation
{
struct SampleRetrieval : SampleRetrievalT<SampleRetrieval>
{
SampleRetrieval() {
};
Windows::Foundation::Collections::IVector<SampleStruct> GetSamples() const;
};
}
namespace winrt::SampleComponents::factory_implementation
{
struct SampleRetrieval : SampleRetrievalT<SampleRetrieval,implementation::SampleRetrieval>
{
};
}
SampleComponents.cpp:
#include "pch.h"
#include "SampleComponents.h"
using namespace winrt;
namespace winrt::SampleComponents::implementation
{
Windows::Foundation::Collections::IVector<SampleStruct> SampleRetrieval::GetSamples() const
{
Windows::Foundation::Collections::IVector<SampleStruct> items{ winrt::single_threaded_vector<SampleStruct>() };
do
{
... GET DATA ...
SampleStruct sample;
... FILL SAMPLE DATA ...
items.Append(sample);
} while (... CONDITION ...);
return items;
}
}
当我从C#调用SampleRetrieval.GetSamples()时,就是我得到异常。
我不确定这里缺少什么。我尝试了许多不同的方法,但无法正常工作。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。