我正在尝试将一种结构从 VB 传递给 C。
这个结构只有 2 个成员。问题是只有第一个成员保持该值。
我想这是每个成员的大小问题,但我不知道如何解决。
示例和代码:
VB .Net 代码:
<DllImport("UserMode_C.dll")> _
Shared Sub someExample(ByVal handleOfSomething As IntPtr, ByRef Filter As __Structure)
End Sub
<StructLayout(LayoutKind.Sequential)> _
Structure __Structure
<MarshalAs(UnmanagedType.U8)> Public UsbSerial As ULong
<MarshalAs(UnmanagedType.U8)> Public UsbType As ULong
End Structure
Dim Buffer As New __Structure
Buffer.UsbSerial = 123456
Buffer.UsbType = 8
Device = 123456
someExample(Device, Buffer)
C代码:
typedef struct __Structure{
ULONG UsbSerial;
ULONG UsbType;
}__Structure, *__Structure;
#define DllExport __declspec(dllexport)
EXTERN_C
{
DllExport void someExample(HANDLE handleOfSomething, __Structure* Filter)
{
//
// Here we have
// Filter.UsbSerial = 123456
// Filter.UsbType = 0 <<<--- this is wrong! I sent 8.
/* ... */
}
}