私のC#には次のような構造体があります:
[StructLayout(LayoutKind.Sequential, CharSet=CharSet.Ansi)]
public struct UserProfileData
{
int userProfileRevision;
[MarshalAs(UnmanagedType.LPStr)]
public String firstName;
[MarshalAs(UnmanagedType.LPStr)]
public String lastName;
[MarshalAs(UnmanagedType.LPStr)]
public String memberids;
[MarshalAs(UnmanagedType.LPStr)]
public String emailAddress;
}
私はこれへの参照を渡します
typedef struct userProfile
{
int profileRevision;
char *firstName;
char *lastName;
char *memberids;
char *emailAddress;
} userProfile_t;
私のC.dllはこのような機能を持っています
int getUserProfileData(userProfile_t *pUserProfile);
上記の構造体の文字列の値を取得します。この関数をC#コードから呼び出すと、int値'profileRevision'が適切に入力されます。'firstname'のような文字列は、上記のC関数内で適切に動的に割り当てられ、入力されますが、コードがC#環境に戻ると、構造体のすべての文字列はnullになります。これを処理するための最良の方法は何ですか?