Я работаю над созданием файла dll для SDK программного обеспечения, и я пытаюсь вызвать функцию для получения информации о хосте программного обеспечения.
в структуре, которую хочет функция, есть две переменные без знака (HostMachineAddress, HostProgramVersion), и кажется, что я "теряю" последний байт, когда пытаюсь вызвать его из c # ... если я изменю SizeConst в c # Структура ниже до 5 я получаю пропущенный байт, однако это приводит к потере данных другой переменной.
Может ли кто-нибудь помочь мне найти способ решить эту проблему? также попытка использовать класс вместо struct вызывает ошибку system.stackoverflow
C # Struct
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
public struct sHostInfo
{
public int bFoundHost;
public int LatestConfirmationTime;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
public string szHostMachineName;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)]
public string HostMachineAddress;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
public string szHostProgramName;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)]
public string HostProgramVersion;
}
C #
[DllImport("Cortex_SDK.dll")]
public static extern int GetHostInfo(out sHostInfo pHostInfo);