1

C++ では、次のような構造があります。

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

しかし、C# ではこのベクトルは必要ありません。この構造の一部を C# に渡す方法はありますか?

私はこのようなことをしようとします:

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

しかし、それは機能していません。

4

2 に答える 2

3

struct渡すメンバーのオフセットが異なるため、上部または中央の部分を任意に切り落として、それが機能することを期待することはできません。

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

ただし、ベクトルを の一番下に移動すると、トリックが機能する可能性がありますstruct。個々structの を渡すことはできますが、それらの配列を渡すことはできません。

----------- ------------
| 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 に答える