임 소프트웨어의 SDK 용 dll 파일로 작업 중이며 소프트웨어 호스트 정보를 얻기 위해 함수를 호출하려고합니다.P/Invoke, C# : 부호없는 문자가 바이트를 잃는
함수가 원하는 구조체에 두 개의 서명되지 않은 char 변수 (HostMachineAddress, HostProgramVersion)가 있습니다. C#에서 호출하려고 할 때 마지막 바이트가 "느슨한 것처럼 보입니다 ... ... 내가 SizeConst를 C# 아래 5 struct 누락 된 바이트 가져옵니다, 그러나 다른 변수를 느슨하게 데이터를 발생합니다.
누군가이 문제를 해결할 방법을 찾도록 도와 줄 수 있습니까? 대신 구조체의 클래스를 사용하려고 시도하는 것은 system.stackoverflow 오류를 발생
C# 구조체
[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);
HostProgramVersion과 szHostProgramName을 C# 코드로 바꿔 놓은 이유는 무엇입니까? – Fox32