Je suis confronté à un problème lors de l'utilisation d'une DLL non gérée dans mon application .net et de l'obtention de l'exception "Le moteur d'exécution a rencontré une erreur fatale L'adresse de l'erreur était à 0x79e71bd7, sur thread 0xbb4. code est 0xc0000005 Cette erreur peut être un bogue dans le CLR ou dans les parties non sécurisées ou non vérifiables du code utilisateur.Les sources communes de ce bogue incluent des erreurs de marshaling utilisateur pour COM-interop ou PInvoke, qui peuvent corrompre la pile.FatalExecutionEngineError a été détecté
mon code est ci-dessous ....
[DllImport("ITMSDLL.dll")]
internal static extern int get_month_mask(ref String theMask,ref String theByt, int theSt_Dow, int theSt_Week, int theEn_Dow, int theEn_Week);
et callng cette méthode en suivant la méthode en C#
public int GetMonthMask(ref String theMask,ref String theByt, int theSt_Dow, int
theSt_Week, int theEn_Dow, int theEn_Week)
{
return CITMSDLLMethods.get_month_mask(ref theMask, ref theByt, theSt_Dow,
theSt_Week, theEn_Dow, theEn_Week);
}
ci-dessus deux méthodes sont de dll wrapper fait en .net.
et la méthode ci-dessus est appelé par le code suivant
aRc = Utility.objCITMSDLL.GetMonthMask(ref aRetMask,ref aMByte, aSt_Dow, aSt_Wk, aEn_Dow, aEn_Wk);
lorsque vous appelez cette méthode, il émet une exception « FatalExecutionEngineError a été détectée » et le message d'exception prévue dans la partie supérieure.
Bonjour, Merci pour votre réponse. J'ai essayé en utilisant Bulder String mais ce n'était pas utile non plus et en jetant la même erreur. – user603153
Vous devez publier la définition C de la méthode; De cette façon, les gens pourraient jeter un coup d'œil et suggérer une cartographie différente. – Timores
En fait, je n'ai pas la définition de la méthode, je n'ai que le fichier .dll. Cette DLL a été précédemment utilisée dans l'application oracle .fmb. Ce qui suit est la définition utilisée dans le fichier oracle .fmb. – user603153