J'ai une DLL C++ qui a une fonction dans ce que j'essaye d'appeler à partir d'une application C#.Problème avec C# <-> C++ DLLImport "Tentative de lecture ou d'écriture de la mémoire protégée."
Voici le code dans le fichier d'en-tête C de
extern "C" _declspec(dllexport) int LabelStoringSSDsim(int devNum, UCHAR serial[40], UCHAR wwn[40],
UCHAR ConfigID[5], UCHAR FrmRev[8], UCHAR DevName[40], int eCode);
Voici le code dans le fichier source C++
int LabelStoringSSDsim(int devNum, UCHAR serialLbl[40], UCHAR wwnLbl[40],
UCHAR ConfigID[5], UCHAR FrmRev[8], UCHAR DevName[40], int eCode)
{
string strConfigID="12111"; //5 bytes
string strFrmRev="1.25...."; //8 bytes
string strDevName="ABC-123................................."; //40 bytes
for (int i=0;i<5;i++)
ConfigID[i] = strConfigID[i];
for (int i=0;i<8;i++)
FrmRev[i] = strFrmRev[i];
for (int i=0;i<40;i++)
DevName[i] = strDevName[i];
return eCode;
}
est ici le C# pertinent Donc, quand j'arrive au dernier bit de code, j'obtiens le message "Tentative de lecture ou d'écriture de la mémoire protégée." Ceci est souvent une indication qu'une autre mémoire est corrompue. » Erreur.
Je n'ai aucune expérience préalable dans l'importation DLL est comme ça et je l'ai fait beaucoup de recherche, mais ne peut pas sembler trouver une solution au problème.
J'ai essayé de repartir de zéro avec une simple fonction retournant un nombre entier, et cela a fonctionné.J'ai ajouté un int pour que je passe à la fonction et cela a fonctionné.Puis j'ai ajouté un tableau d'octets pour que je passe Ensuite, j'ai essayé de transformer ce tableau d'octets en une référence et il a échoué, donc je suppose que je reçois les données de façon incorrecte
Toute aide est grandement appréciée
qui produit l'erreur suivante: L'exception de type 'System.ExecutionEngineException' a été levée. – Chris
@Chris, je pense avoir eu une erreur de syntaxe. Essayez ma nouvelle version améliorée ci-dessus. –
Désolé, toujours la même chose: X - L'erreur se produit à ce dernier bit de code à la place de l'erreur précédente. – Chris