Unity C#和C 结构映射

Unity c# and c++ struct Mapping

本文关键字:结构 映射 Unity      更新时间:2023-10-16

我使用的是unity 2017,在我的督导中,我使用c dll文件来定义我的用户信息结构,例如:

c++ :
struct UserInfo
{ 
  int  userID;
  int  loginID;
  char username[32];
  char signature[128];
  long long goldNum;
  int deskID;
}

当我在c#中定义一个结构时:

C#:
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
public struct UserInfo
{
  System.Int32 userID;
  System.Int32 loginID;
  [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
  public string username;
  [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
  public string signature;
  public System.Int64 goldNum;
  System.Int32 deskID;
}

最后,我无法获得正确的用户名字符串,它是空的。

wnhen我将"公共字符串用户名"更改为" public byte []用户名,它正常工作。

如何获得字符串数据,而不能获取字节[]数据,因为我需要将字符串更改为lua文件?

感谢您的帮助!

免责声明:我在C 和C#之间不经历了经验。

也就是说,我相信该系统不直接知道如何将字符阵列转换为字符串。

但是,您可以使用此方法将至少C#char数组转换为C#字符串。也许它也可以在语言之间起作用。

char[] charArray = {'1', '2', '3'};
string s = new string(charArray);

所以也许尝试将您的C char数组存储在C#char数组中,然后将其转换为字符串。

让我知道是否有效: - (