结构内部结构的元帅安全arrays
我在C ++中有以下代码,我需要能够从C#调用:
struct Inner { double data1; double data2; }; struct Outer { double data3; SAFEARRAY innerData; }; int WINAPI ProcessData (Outer& outer ) { ... }
我尝试了以下但是它没有用我做错了什么?
[StructLayoutAttribute(LayoutKind.Sequential)] public struct Inner { public double data1; public double data2; } [StructLayoutAttribute(LayoutKind.Sequential)] public struct Outer { public double data3; [MarshalAsAttribute(UnmanagedType.Safearray,ArraySubType = UnmanagedType.Struct)] public Inner[] innerData; }
你试过这个吗?
[StructLayoutAttribute (LayoutKind.Sequential)] public struct Outer { public double data3; [MarshalAsAttribute (UnmanagedType.SafeArray, SafeArrayUserDefinedSubType=typeof(Inner))] public Inner [] innerData; }
它看起来好像属性声明不正确,因为它拒绝编译…
[StructLayoutAttribute(LayoutKind.Sequential)] public struct Outer { 公共双数据3; [MarshalAsAttribute(UnmanagedType.SafeArray,SafeArraySubType = VarEnum.VT_SAFEARRAY)] public Inner [] innerData; }
希望这会有所帮助,最好的问候,汤姆。
当我尝试这个:[MarshalAsAttribute(UnmanagedType.SafeArray,SafeArrayUserDefinedSubType = typeof(Inner))]
我得到:Driver.exe中发生了’System.ArgumentException’类型的未处理exception
附加信息:参数不正确。 (HRESULTexception:0x80070057(E_INVALIDARG))