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

Messages postés
189
Date d'inscription
vendredi 28 mai 2004
Statut
Membre
Dernière intervention
27 novembre 2015
- - Dernière réponse : 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
Afficher la suite 

Votre réponse

4 réponses

Meilleure réponse
Messages postés
189
Date d'inscription
vendredi 28 mai 2004
Statut
Membre
Dernière intervention
27 novembre 2015
3
Merci
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

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 145 internautes nous ont dit merci ce mois-ci

Commenter la réponse de babe59
Messages postés
5507
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
37
0
Merci
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-
Commenter la réponse de cs_Bidou
Messages postés
189
Date d'inscription
vendredi 28 mai 2004
Statut
Membre
Dernière intervention
27 novembre 2015
0
Merci
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
Commenter la réponse de babe59
Messages postés
189
Date d'inscription
vendredi 28 mai 2004
Statut
Membre
Dernière intervention
27 novembre 2015
0
Merci
A la place de "l'instruction fonction" lire "l'instruction fonctionne"

DT
Commenter la réponse de babe59