是否可以从C dlls导入C#结构定义?
在我看到的所有例子中,都是用C#重新定义结构。如果结构改变怎么办?我需要在我的项目中改变两个位置......
struct MyCStruct
{
unsigned long A;
unsigned long B;
unsigned long C;
};
并在C#中:
[StructLayout(LayoutKind.Sequential)]
internal struct MyCStructAgain
{
public uint A;
public uint B;
public uint C;
}
如果无法重复使用这些定义,为什么会这样?
由于
答案 0 :(得分:2)
您可以将结构编译为C ++ / CLI,编译器会为您生成托管副本,然后您可以引用它们。您需要一个ifdef来添加值以使其成为.NET结构。
#ifdef CLIEXPORT
#define value
#endif
CLIEXPORT struct MyCStruct
{
unsigned long A;
unsigned long B;
unsigned long C;
};