Récupérer les exceptions pour les DllImport

Résolu
babe59 Messages postés 189 Date d'inscription vendredi 28 mai 2004 Statut Membre Dernière intervention 27 novembre 2015 - 1 oct. 2008 à 10:04
babe59 Messages postés 189 Date d'inscription vendredi 28 mai 2004 Statut Membre Dernière intervention 27 novembre 2015 - 1 oct. 2008 à 19:21
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

babe59 Messages postés 189 Date d'inscription vendredi 28 mai 2004 Statut Membre Dernière intervention 27 novembre 2015
1 oct. 2008 à 19:21
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
3
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
1 oct. 2008 à 12:46
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-
0
babe59 Messages postés 189 Date d'inscription vendredi 28 mai 2004 Statut Membre Dernière intervention 27 novembre 2015
1 oct. 2008 à 12:49
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
0
babe59 Messages postés 189 Date d'inscription vendredi 28 mai 2004 Statut Membre Dernière intervention 27 novembre 2015
1 oct. 2008 à 13:42
A la place de "l'instruction fonction" lire "l'instruction fonctionne"

DT
0
Rejoignez-nous