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 :

DllImport avec extern C


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 23
    Par défaut DllImport avec extern C
    Bonjour,

    J'essaie de faire un extern c d'une fonction que j'utilise après en c#

    dans ma fonction je remplis un buffer de la taille BufferSize;

    après je copie le contenu du buffer dans Data qui est passé en paramètre par la fonction.

    ma fonction c contient les params suivant

    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    extern "C" {
    int ReadSingleFrameBlocking_(unsigned short *Data,unsigned long BufferSize)
    {
          Buf = (unsigned short*)malloc(sizeof(unsigned short)*BufferSize);
          /*ici je remplie le Buf*/
          /*apresje copie Buf dans Data*/
     
          for(int i=0;i<BufferSize;i++)
          {
               Data[i] = Buf[i];
          }
           return 0;
     
    }
    }

    du coté de c# je fais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    [DllImport("TestTADLL.dll", EntryPoint = "ReadSingleFrameBlocking_", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
            public static extern int ReadSingleFrameBlocking_(ref UInt16 Data,UInt32 BufferSize);
    pour appeler la fonction je fait

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    res = ReadSingleFrameBlocking_(ref Data, BufferSize);
    le but c'est de pouvoir exploiter les données du Data dans c# après avoir été remplie par le code C

    mais je n'arrive pas à récupérer les informations dans Data ca me renvoi une erreur
    Attempted to read or write protected memory. This is often an indication that other memory is corrupt.
    si quelqu'un à une idée merci d'avance.

  2. #2
    Membre expérimenté
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Par défaut
    Salut

    J'ai pas tout lu mais déja ceci me fait frémir



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    int ReadSingleFrameBlocking_(unsigned short *Data,unsigned long BufferSize)
    {
    Buf = (unsigned short*)malloc(sizeof(unsigned short)*BufferSize);
    malloc rends un pointeur long !
    Et toi tu caste ce long en short !!

    Forcément ca ne vas pas le faire

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 23
    Par défaut
    en fait c'est correct ce que j'ai mis la j'ai juste oublié de te mettre cette ligne

    puisque le buf est déclaré en ushort* alors on peut faire un cast comme ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Buf = (unsigned short*)malloc(sizeof(unsigned short)*BufferSize);
    mais bon maintenant j'ai reussi a regler le probleme.

    merci quand meme

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

Discussions similaires

  1. Problèmes avec extern
    Par oodini dans le forum Langage
    Réponses: 2
    Dernier message: 11/04/2012, 16h29
  2. DLLImport avec Fortran et StructLayout
    Par azraec dans le forum C#
    Réponses: 6
    Dernier message: 07/04/2010, 13h27
  3. problème dllImport avec tableau de char[] en paramètre E/S
    Par moulefrite dans le forum Windows Forms
    Réponses: 4
    Dernier message: 24/12/2008, 10h07
  4. [xsl:fo] problème avec external-graphic
    Par jehlg dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 11/10/2005, 11h57
  5. [Système] Ouvrir fichier externe avec prog par défaut de l'OS
    Par Pill_S dans le forum API standards et tierces
    Réponses: 9
    Dernier message: 30/05/2004, 11h54

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