我正在使用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;
}
最后,我无法获得正确的用户名字符串,它是空的。
当我改变"公共字符串用户名"到" public byte [] username"它工作正常。
如何获取字符串数据而不是byte []数据,因为我需要将字符串更改为lua文件?
感谢您的帮助!
答案 0 :(得分:-1)
免责声明:我没有在C ++和C#之间进行转换的经验。
那就是说,我相信系统并不直接知道如何将char数组转换为字符串。
但是,您可以使用此方法将至少一个C#char数组转换为C#字符串。也许它也适用于语言之间。
char[] charArray = {'1', '2', '3'};
string s = new string(charArray);
所以也许尝试将c ++ char数组存储在C#char数组中,然后将其转换为字符串。
如果有效,请告诉我: - )