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

  1. #1
    Dos
    Dos est déconnecté
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2003
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2003
    Messages : 137
    Points : 84
    Points
    84
    Par défaut System.Runtime.InteropServices.MarshalDirectiveException*: 'Impossible de marshaler 'parameter #2'*: Impossibl
    Bonjour,
    J'ai une erreur assez peu courante :
    "System.Runtime.InteropServices.MarshalDirectiveException*: 'Impossible de marshaler 'parameter #2'*: Impossible de marshaler les types génériques.'
    Et je n'arrive pas a m'en sortir.
    Auriez vous une piste a me donner ?
    Voici mon code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    [DllImport(@"toto.dll")]
        public static extern int toto_send_bytes_register(UIntPtr hdl,  Func<uint, uint, UInt16, uint, int> cb, IntPtr user_data);
     
        internal int MyToto_diag_send_bytes_register(UIntPtr hdl, Func<uint, uint, ushort, uint, int> cb, IntPtr user_data)
        {
            return toto_send_bytes_register(hdl, cb, user_data);  --------> Ca plante ici à l'execussion ...System.Runtime.InteropServices.MarshalDirectiveException*: 'Impossible de marshaler 'parameter #2'*: Impossible de marshaler les types génériques.'
     
        }
    }

    J'ai rajouté des [MarshalAs(UnmanagedType.FunctionPtr)] sur le deuxieme parametre... pas mieux...
    Merci pour votre aide...
    Dos

  2. #2
    Dos
    Dos est déconnecté
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2003
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2003
    Messages : 137
    Points : 84
    Points
    84
    Par défaut
    Citation Envoyé par Dos Voir le message
    Bonjour,
    J'ai une erreur assez peu courante :
    "System.Runtime.InteropServices.MarshalDirectiveException*: 'Impossible de marshaler 'parameter #2'*: Impossible de marshaler les types génériques.'
    Et je n'arrive pas a m'en sortir.
    Auriez vous une piste a me donner ?
    Voici mon code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    [DllImport(@"toto.dll")]
        public static extern int toto_send_bytes_register(UIntPtr hdl,  Func<uint, uint, UInt16, uint, int> cb, IntPtr user_data);
     
        internal int MyToto_diag_send_bytes_register(UIntPtr hdl, Func<uint, uint, ushort, uint, int> cb, IntPtr user_data)
        {
            return toto_send_bytes_register(hdl, cb, user_data);  --------> Ca plante ici à l'execussion ...System.Runtime.InteropServices.MarshalDirectiveException*: 'Impossible de marshaler 'parameter #2'*: Impossible de marshaler les types génériques.'
     
        }
    }

    J'ai rajouté des [MarshalAs(UnmanagedType.FunctionPtr)] sur le deuxième paramètre pas mieux...
    Merci pour votre aide...

    Si je recontextualise, j'essaye de passer le pointeur d'une fonction callback à une dll.
    Mais je m'y prends peut-être mal...
    Dos

  3. #3
    Dos
    Dos est déconnecté
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2003
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2003
    Messages : 137
    Points : 84
    Points
    84
    Par défaut
    J'ai tenté ça... https://learn.microsoft.com/fr-fr/do...allback-method
    Je plante toujours mais différemment
    Dos

  4. #4
    Dos
    Dos est déconnecté
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2003
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2003
    Messages : 137
    Points : 84
    Points
    84
    Par défaut
    C'était bien la solution il fallait juste préciser : CallingConvention = CallingConvention.Cdecl
    V'la.
    Dos

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

Discussions similaires

  1. Réponses: 7
    Dernier message: 15/02/2022, 15h14
  2. [Débutant] Impossible importer Imports System.Runtime.InteropServices.Automation
    Par pitite dans le forum VB.NET
    Réponses: 1
    Dernier message: 14/05/2012, 10h11
  3. System.Runtime.InteropServices.COMException Service WCF
    Par Carmel_O dans le forum Windows Communication Foundation
    Réponses: 6
    Dernier message: 18/03/2010, 20h15
  4. message d'erreur sur System.Runtime.InteropServices
    Par l_achraf dans le forum VB.NET
    Réponses: 2
    Dernier message: 15/04/2009, 16h07
  5. Réponses: 1
    Dernier message: 02/07/2008, 11h21

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