1

In C++ I have structure like this:

struct Structure
{
    std::vector<int> vect;
    int i;
    double d;
};

but in C# I don't need this vector. Is it a way to pass part of this structure to C#?

I try to do something like this:

[StructLayoutAttribute(LayoutKind.Sequential)]
public struct Structure
{
    public int i;
    public double d;
}

but it isn't working.

4

2 回答 2

3

你不能随意砍掉顶部或中间的部分struct并期望它起作用,因为你传递的成员的偏移量会有所不同。

----------- ------------
| C++ view | C# view   |
----------- ------------
|   vect   |     i     |
----------- ------------
|     i    |     d     |
----------- ------------
|     d   |
----------

但是,如果您将向量移动到 : 的底部,您的技巧可能会奏效,struct您应该能够传递单个structs,但不能传递它们的数组。

----------- ------------
| C++ view | C# view   |
----------- ------------
|     i    |     i     |
----------- ------------
|     d    |     d     |
----------- ------------
|   vect   |
----------

如果Structure用作较大的struct.

于 2013-10-02T10:29:05.900 回答
0

那是行不通的,因为vect.Net 结构中缺少该字段。vect尝试向 .Net 结构中添加一个与:大小完全相同的字段sizeof(vect)

于 2013-10-02T10:31:53.950 回答