public struct Data
{
public long id,
public datetime time;
public string[] atts;
public string[] names;
};
Guid("3102C9D3-822E-4359-9383-9B3AF7D39F2C")]
public interface IData
{
void GetEvents([MarshalAs(UnmanagedType.LPArray)]out DataResp[] resp);
}
我想传递和接收从C#到c ++ Component的复杂结构,并将其填充到c ++中。 客户端代码就像这样
Lib::Data* data;
long size = svc->GetEvents(&data);
for(size_t i = 0; i < size; ++i)
{
Lib::Data& current = data[i];
long val = current.Value;
bstr_t unit = current.Unit;
任何人都可以帮助我如何从c ++中读取字符串数组,也可以编组日期时间。
答案 0 :(得分:0)
这样做会遇到几个问题。大多数情况下,您必须使用多个属性来装饰结构。
对于传递字符串,我建议您使用Stringbuilder构建一个C ++预期大小的字符串,这对于它来说已经足够了。
我多次遇到的另一个问题是打包。它改变了结构的排列。要解决此问题,您应确保通过提供适当的属性来顺序对齐结构。
此外,如果它要求您传递任何指针,请确保在传递之前固定对象,否则运行时将更改它。