簡體   English   中英

在C ++和C#之間傳遞零件結構

[英]Passing part structure between C++ and C#

在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;
}

但它不起作用。

你不能隨意砍掉struct頂部或中間的部分並期望它起作用,因為你傳遞的成員的偏移量會有所不同。

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

但是,如果將向量移動到struct的底部,您的技巧可能會起作用:您應該能夠傳遞單個struct ,但不能傳遞它們的數組。

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

如果將Structure用作更大struct的成員,它也將無效。

這不起作用,因為.Net結構中缺少vect字段。 嘗試向.Net結構添加一個字段,其大小與vectsizeof(vect)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM