Note that there are some explanatory texts on larger screens.

plurals
  1. POHow to parse struct to C++ dll from C#?
    text
    copied!<p>I am trying to call a function in a unmanaged C++ dll. </p> <p>It has this prototype:</p> <pre><code> [DllImport("C:\\Program Files\\MySDK\\VSeries.dll", EntryPoint = "BII_Send_Index_Template_MT" )] internal unsafe static extern Int32 BII_Send_Index_Template_MT(IntPtr pUnitHandle, ref BII_Template template, Int32 option, Boolean async); BII_Template template = new BII_Template(); error_code = BII_Send_Index_Template_MT(pUnitHandle, ref template, option, false); </code></pre> <p>This is how I define the BII_Template struct in C#:</p> <pre><code>public unsafe struct BII_Template { public ulong id; public ulong employee_id; public ulong password; public byte sensor_version; public byte template_version; public fixed char name[16]; public byte finger; public byte admin_level; public byte schedule; public byte security_thresh; public fixed byte noise_level[18]; public byte corramb; public byte reference_x; public byte reference_y; public fixed byte ihcore[3]; public fixed byte ivcore[3]; public byte temp_xoffset; public byte temp_yoffset; public byte index; public fixed byte inphase[5500]; }; </code></pre> <p>It builds and when I run it the dll return error_code = "The record checksum is invalid."</p> <p>I assume that I am using <code>ref</code> in a wrong way or the size of some of the elements in the struct is wrong. </p> <p>----- EDIT ------------</p> <p>Here is the struct in C++:</p> <pre><code>typedef struct { unsigned long id; unsigned long employee_id; unsigned long password; unsigned char sensor_version; unsigned char template_version; char name[16]; unsigned char finger; unsigned char admin_level; unsigned char schedule; unsigned char security_thresh; unsigned char noise_level[18]; unsigned char corramb ; unsigned char reference_x ; unsigned char reference_y ; unsigned char ihcore[NUM_CORE]; unsigned char ivcore[NUM_CORE]; unsigned char temp_xoffset; unsigned char temp_yoffset; unsigned char index; unsigned char inphase[PACKED_ARRAY_SIZE]; } BII_Template; </code></pre>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload