C C#

2013-10-02 52 views
1
++和

通過區域結構在C++中我有結構是這樣的: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; 
} 

,但它無法正常工作。

+0

如果您將矢量粘貼在結構的末尾,那麼它*可能會工作,然後int和double將對齊。 –

+0

我只是將int和double組件複製到另一個結構中,然後傳遞它。 – Surfbutler

回答

3

您不能在struct的頂部或中間任意砍掉零件,並期望它可以正常工作,因爲您通過的零件的偏移量會有所不同。

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

你的絕招可以工作,但是,如果移動矢量您struct的底部:你應該能夠通過個人struct S,但不是他們的陣列。

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

它還如果Structure用作較大struct一個構件是行不通的。

0

這不會起作用,因爲.Net結構中缺少vect字段。嘗試將字段添加到.Net結構中,其大小與vect的大小完全相同:sizeof(vect)