Récupérer les exceptions pour les DllImport [Résolu]

Signaler
Messages postés
189
Date d'inscription
vendredi 28 mai 2004
Statut
Membre
Dernière intervention
27 novembre 2015
-
Messages postés
189
Date d'inscription
vendredi 28 mai 2004
Statut
Membre
Dernière intervention
27 novembre 2015
-
Bonjour,

J'utilise une DLL (générée à partir d'un code FORTRAN par Intel Fortran Compiler) dans un programme C# sous VS2005. Cela fonctionne hormis le fait que je n'arrive pas à trapper les exceptions. Dans l'exemple qui suit, j'ai généré un erreur en passant 10 en paramètre à ARRAYTEST (param qui ne peut dépasser 3 (première dimension de mon tableau). Or le programme affiche une erreur lors de l'execution à l'appel de ARRAYTEST puis il s'arrête. Il ne va pas dans mon cacth. Pourriez vous me dire pourquoi ?
Merci
[

DllImport(
"dll1.dll")]

public
static
extern
void ARRAYTEST(
      [
MarshalAs(
UnmanagedType.LPArray)]
int[,] arr,
      [
MarshalAs(
UnmanagedType.I4)]
int len);
...

private
void button1_Click(
object sender,
EventArgs e)
{

   int[,] entiers =
new
int[3, 7];

   try
   {
      ARRAYTEST(entiers, 10);
// Erreur car 10 correspond à la 1ere dim de mon tableau entiers (max = 3)
   }

   catch (
Exception ex)
   {

      MessageBox.Show(ex.Message +
"\n" + ex.Source +
"\n" + ex.InnerException +
"\n" + ex.StackTrace);
   }
}

DT

4 réponses

Messages postés
189
Date d'inscription
vendredi 28 mai 2004
Statut
Membre
Dernière intervention
27 novembre 2015

J'ai eu une réponse sur le forum de Intel Fortran (le problème vient de la DLL et non pas du code C#.
Désolé pour le dérangement...

DT
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
56
Bonjour,
Je ne sais pas si c'est le problème, mais en C# un tableau est déclarer avec [] et pas [,].
[,] représente un jagged array, ce qui est quelque peu différent...








<hr />
-My Blog-
Messages postés
189
Date d'inscription
vendredi 28 mai 2004
Statut
Membre
Dernière intervention
27 novembre 2015

Le problème n'est pas là. L'instruction fonction (tableau à deux dimensions). L'erreur générée est une erreur applicative. C'est moi qui passe un paramètre supérieur à la valeur maximale attendue => ceci dans un but de déclencher une exception lors de l'execution de ma DLL (je suis en phase de test)

DT
Messages postés
189
Date d'inscription
vendredi 28 mai 2004
Statut
Membre
Dernière intervention
27 novembre 2015

A la place de "l'instruction fonction" lire "l'instruction fonctionne"

DT