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

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

Merci babe59 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 69 internautes ce mois-ci

Commenter la réponse de babe59
cs_Bidou 5507 Messages postés dimanche 4 août 2002Date d'inscription 20 juin 2013 Dernière intervention - 1 oct. 2008 à 12:46
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
babe59 189 Messages postés vendredi 28 mai 2004Date d'inscription 27 novembre 2015 Dernière intervention - 1 oct. 2008 à 12:49
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
babe59 189 Messages postés vendredi 28 mai 2004Date d'inscription 27 novembre 2015 Dernière intervention - 1 oct. 2008 à 13:42
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.