0
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++ 组件并将其填充到 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++ 读取字符串数组以及编组日期时间。

4

1 回答 1

0

这样做时您将面临几个问题。大多数时候,您将不得不用几个属性来装饰结构。

对于传递字符串,我建议您使用 Stringbuilder 构建一个 C++ 预期大小的字符串,这样就足够了。

我多次面临的另一个问题是打包。它改变了结构的对齐方式。要解决此问题,您应该通过提供适当的属性来确保结构按顺序对齐。

此外,如果它要求您传递任何指针,请确保在传递之前固定对象,否则运行时会更改它。

于 2012-09-29T10:46:39.347 回答