Ceci est mon c struct ++ (utilisation multi-octets Jeu de caractères)maréchal géré string [] CHAR non géré **
typedef struct hookCONFIG {
int threadId;
HWND destination;
const char** gameApps;
const char** profilePaths;
} HOOKCONFIG;
Et struct .Net
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)]
public struct HOOKCONFIG {
public int threadId;
public IntPtr destination;
// MarshalAs?
public string[] gameApps;
// MarshalAs?
public string[] profilePaths;
}
Je suis un problème que la façon dont puis-je marshaler le tableau de chaînes? Quand en C++ I j'accéder à la variable struct "profilePaths" a obtenu une erreur comme ceci:
Une exception non gérée du type 'System.AccessViolationException' a eu lieu dans App.exe
Informations complémentaires: Tentative de lecture ou écrire une mémoire protégée. C'est souvent une indication que l'autre mémoire est corrompue.
MessageBox(0, cfg.profilePaths[0], "Title", MB_OK); // error ... Orz
Pouvez-vous essayer commentant le HWND/IntPtr? –