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 :

PInvoke et Importation de DLL


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Homme Profil pro
    DUT Info 2A
    Inscrit en
    Avril 2017
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : DUT Info 2A
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2017
    Messages : 10
    Par défaut PInvoke et Importation de DLL
    Bonjour,

    J'essaye actuellement d'importer des DLL (littleCMS) depuis le langage C vers C#; et j'ai quelques soucis avec Pinvoke.
    Avec les codes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
    namespace myLib
    {
        public class WrapperLCMS
        {
            public struct cmsHPROFILE
            {
                Object profile;
            }
    #region import
     
            [DllImport("lcms.dll")]
            public static extern unsafe cmsHPROFILE cmsOpenProfileFromFile(char* ICCProfile, char* sAccess);
    #endregion import
     
    #region InitFct
            public static unsafe cmsHPROFILE OpenProfileFromFile(string profile, string sAccess)
    	    {
                fixed (char* ICC = profile.ToCharArray())
                    fixed (char* access = sAccess.ToCharArray())
                        return cmsOpenProfileFromFile(ICC, access);
    	    }
    #endregion InitFct
        }
    }
    sur ma DLL et le code suivant dans un main de test qui à ma DLL en référence :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    using myLib;
     
    namespace test_luib
    {
        class Program
        {
            static void Main(string[] args)
            {
                WrapperLCMS.cmsHPROFILE hInProfile, hOutProfile;
               // WrapperLCMS.cmsHTRANSFORM hTransform;
     
                hInProfile = WrapperLCMS.OpenProfileFromFile("1.icc", "r");
                hOutProfile = WrapperLCMS.OpenProfileFromFile("2.icc", "r");
            }
        }
    }
    Est-ce que j'utilise mon wrapper de la bonne façon ? le message d'erreur est : La signature du type de cette méthode n'est pas compatible avec PInvoke.

    Merci d'avance de votre aide.

    PS: J'espère être dans le bon endroit pour poster cela.

    EDIT : voila le prototype en C de la fonction que j'essaye de wrapper : CMSAPI cmsHPROFILE CMSEXPORT cmsOpenProfileFromFile(const char *ICCProfile, const char *sAccess);

  2. #2
    Membre très actif
    Avatar de charouel
    Homme Profil pro
    Freelance
    Inscrit en
    Mars 2009
    Messages
    618
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2009
    Messages : 618
    Billets dans le blog
    9
    Par défaut
    Essaye de changer cette ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     [DllImport("lcms.dll", EntryPoint="cmsOpenProfileFromFile")]

  3. #3
    Membre régulier
    Homme Profil pro
    DUT Info 2A
    Inscrit en
    Avril 2017
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : DUT Info 2A
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2017
    Messages : 10
    Par défaut
    Aucun changement, même message d'erreur.

  4. #4
    Membre très actif
    Avatar de charouel
    Homme Profil pro
    Freelance
    Inscrit en
    Mars 2009
    Messages
    618
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2009
    Messages : 618
    Billets dans le blog
    9
    Par défaut
    peux tu stp mettre le message d'erreur

  5. #5
    Membre régulier
    Homme Profil pro
    DUT Info 2A
    Inscrit en
    Avril 2017
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : DUT Info 2A
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2017
    Messages : 10
    Par défaut
    "Une exception non gérée du type 'System.Runtime.InteropServices.MarshalDirectiveException' s'est produite dans myLib.dll

    Informations supplémentaires*: La signature du type de cette méthode n'est pas compatible avec PInvoke."

  6. #6
    Membre très actif
    Avatar de charouel
    Homme Profil pro
    Freelance
    Inscrit en
    Mars 2009
    Messages
    618
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2009
    Messages : 618
    Billets dans le blog
    9
    Par défaut
    Il faut définir ton type de retour cmsHPROFILE

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

Discussions similaires

  1. Comment importer une DLL dans du code???
    Par Jayceblaster dans le forum Delphi .NET
    Réponses: 29
    Dernier message: 19/04/2006, 19h19
  2. Importer une DLL
    Par Sallie dans le forum MFC
    Réponses: 8
    Dernier message: 14/04/2006, 10h47
  3. [NetBeans] importer une dll
    Par guitalca dans le forum NetBeans
    Réponses: 1
    Dernier message: 16/12/2005, 11h13
  4. [v6.0] Importer une DLL
    Par ni0urk dans le forum MFC
    Réponses: 19
    Dernier message: 17/11/2005, 16h19
  5. [FLASH MX2004] Importer une dll
    Par Fry dans le forum Flash
    Réponses: 4
    Dernier message: 07/01/2005, 10h54

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