Marshal.SizeOf()は、MyClass型のオブジェクトの長さを計算しようとすると例外をスローします。ここでMarshal.SizeOf()は、文字列を含むオブジェクトのサイズを計算できません。
クラスです:
<StructLayout(LayoutKind.Sequential, Pack:=1)>
Public Class MyClass
Public ReadOnly UniqueId As Long
<MarshalAs(UnmanagedType.AnsiBStr, SizeConst:=60, SizeParamIndex:=0)>
Public ReadOnly Name As String
End Class
このコードは失敗します。
Dim MyObject = New MyClass()
Dim size = Marshal.SizeOf(MyObject) 'will throw exception here. Why?
それは例外
どのようにすることができ、「何の意味の大きさやオフセットを計算することはできない」スローされます代わりにMyObjectの長さを取得しますか?
何プラットフォームあなたは使用しています – Adrian
問題は 'AnsiBStr'であるようです。 'BStr' /' LPStr'/'LPWStr'はうまくいくようですhttps://stackoverflow.com/questions/6471421/marshal-c-char-in-c-sharp – Slai
私はx64版のAnyCPUにコンパイルしています。 –