在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 :(得分:3)
你不能随意切断struct
顶部或中间的部分,并期望它能够正常工作,因为你传递的成员的偏移量会有所不同。
----------- ------------
| C++ view | C# view |
----------- ------------
| vect | i |
----------- ------------
| i | d |
----------- ------------
| d |
----------
但是,如果将向量移动到struct
的底部,您的技巧可能会有效:您应该能够传递单个struct
,但不能传递它们的数组。
----------- ------------
| C++ view | C# view |
----------- ------------
| i | i |
----------- ------------
| d | d |
----------- ------------
| vect |
----------
如果将Structure
用作较大struct
的成员,也无效。
答案 1 :(得分:0)
这不起作用,因为.Net结构中缺少vect
字段。尝试向.Net结构添加一个与vect
完全相同的字段:sizeof(vect)
。