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

Messages postés
189
Date d'inscription
vendredi 28 mai 2004
Dernière intervention
27 novembre 2015
- - Dernière réponse : babe59
Messages postés
189
Date d'inscription
vendredi 28 mai 2004
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
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 118 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
Dernière intervention
20 juin 2013
58
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
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
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

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.