IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

[C#] Soucis avec DLLImport


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 8
    Par défaut [C#] Soucis avec DLLImport
    Voilà j'utilise une dll que j'ai développé en C, dans un programme C#.

    Quand j'appel une fonction de la dll par DLLImport, au moment ou le programme passe sur l'appel de cette méthode, celà me génére une exception du type "Is not PInvoke compatible"

    J'avoue en perdre mon latin.
    Ai-je fait une fausse manip dans l'appel de la fonction ?
    C'est au niveau de la signature que celà coince ?

    Method's type signature is not PInvoke Compatible

    Ma méthode retourne une structutre contenant des enums un bool et un char *. C'est quand j'utilise ce char* que celà me génére une exception. Dans mon appli en C# je déclare une structlayout de la même ossature que celle dans ma dll en C.
    Ensuite j'utilise la méthode Importé par dllimport comme suit : struct = getStruct();

    C'est une MarshallDirectiveException qui est levée.

    Voici le code.

    Dans ma mfc en c dans le .h je déclare la première structure
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    typedef struct  _maStruct
    {
           char* nom;
           enumDefaut def;
           enumEtat etat;
           _structLigne ligne;
    } maStruct;
    puis la deusième
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    typedef struct _structLigne
    {
           char* text;
           bool ok;
    } structLigne;
    le prototype de ma méthode
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    typedef _maStruct (WINAPI *DLL_Function_GET_Struct(void));
    puis dans mon .cpp principale ma méthode
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    _maStruct GET_Struct(void)
    {
           _maStruct struct;
           // traitement sur ma structure
           return struct;
    }
    Dans mon .cs je déclare mes structures
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    [StructLayout(LayoutKind.Sequential)]
    public struct _maStruct
    {
           public string nom;
           etc....
    }
    de même pour _structLigne. Après :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    [DllImport(@"..\..\..\release\MADLL.dll")]
    public static extern _maStruct GET_Struct();
    je l'utilise aprés comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    private void button1_Click(object sender, EventArgs e)
    {
            _maStruct struct;
           struct = GET_Struct();
           Console.Writeline(struct.nom);
    }
    En rouge se qui génére l'exception.

    voilà

    Merci

    X.

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 8
    Par défaut
    Personne ?

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 8
    Par défaut
    Merci encore

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. quelques soucis avec word 2000
    Par ramchou dans le forum Word
    Réponses: 3
    Dernier message: 06/09/2004, 18h13
  2. SOucis avec une reequete imbriquee
    Par Ni4k dans le forum Langage SQL
    Réponses: 6
    Dernier message: 30/03/2004, 08h56
  3. souci avec un algorithme
    Par slider16 dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 22/03/2004, 17h17
  4. [DEBUTANT] petits soucis avec un prgm de chat
    Par LechucK dans le forum MFC
    Réponses: 8
    Dernier message: 19/01/2004, 16h52
  5. Réponses: 4
    Dernier message: 16/02/2003, 12h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo