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#] utilisation de dllimport


Sujet :

C#

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    352
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 352
    Points : 149
    Points
    149
    Par défaut [c#] utilisation de dllimport
    Bonsoir,
    j'ai téléchargé un API pour le pilotage d'un écran VFD . ce téléchargement comporte :
    • un DDL
    • un fichier "Object File Library"
    • un exemple en c++


    je sais que pour pouvoir utliser cette API je dois utliser [dllImport], mais voilà ma connaissance s'arrête là .
    Dois je mettre le DLL dans un répertoire et si oui lequel , j'utilise visual c#xpress ?
    que dois je faire du fichier lb?
    dois je déclarer des constantes dans mon programme et si oui lesquelles et comment ?

    dans l'essemble joint qui est en c++ a quoi correspond le choix entre dllimport et dllexport;
    A quoi correspond les instructions suivante

    Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    #ifdef __cplusplus
    extern "C" {
    #endif
     
    #ifdef __cplusplus
    }	//	extern "C"
    #endif

    Afin de compléter ma demande je vous communique l'exemple en c++
    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    #ifndef __SG_VFD_H__
    #define __SG_VFD_H__
     
    #ifdef IMONVFD_EXPORT
     #define IMONVFD_API __declspec(dllexport)
    #else
     #define IMONVFD_API __declspec(dllimport)
    #endif
     
     
    #define VFDHW_IMON_VFD		4
     
    #ifdef __cplusplus
    extern "C" {
    #endif
     
    ///////////////////////////////////////////////
    //	Open VFD driver and initialize parameters.
    //	Call this method, when application starts.
    //	Return value informs driver is open or not 
    IMONVFD_API bool iMONVFD_Init(int vfdType, int resevered=0);
     
    ///////////////////////////////////////////////
    //	Close VFD driver.
    //	Call this method, when application destroyed.
    IMONVFD_API void iMONVFD_Uninit(void);
     
    ///////////////////////////////////////////////
    //	Check if VFD driver is opened.
    IMONVFD_API bool iMONVFD_IsInited(void);
     
    ///////////////////////////////////////////////
    //	Send text data to VFD. VFD supports only English character set.
    IMONVFD_API bool iMONVFD_SetText(char* szFirstLine, char* szSecondLine);
     
    ///////////////////////////////////////////////
    //	Send EQ data to VFD.
    //	Total 16band, each band ranges from 0 to 100 
    //  make EQ data with integer array.
    IMONVFD_API bool iMONVFD_SetEQ(int* arEQValue);
     
    #ifdef __cplusplus
    }	//	extern "C"
    #endif
     
    #endif	//__SG_VFD_H__

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 753
    Points
    39 753
    Par défaut
    pour commencer, je te conseille de jeter un coup d'oeil à ces tutoriels sur l'interopérabilité avec le code natif :
    http://morpheus.developpez.com/dlldotnet/
    http://nico-pyright.developpez.com/t...c2005/interop/
    http://nico-pyright.developpez.com/t...2005/interop2/


    Citation Envoyé par TERRIBLE Voir le message
    Dois je mettre le DLL dans un répertoire et si oui lequel , j'utilise visual c#xpress ?
    Mets la DLL dans le répertoire de l'exécutable, ou dans un répertoire du PATH

    Citation Envoyé par TERRIBLE Voir le message
    que dois je faire du fichier lb?
    lb ça ne me dit rien... tu veux dire lib je suppose ? tu n'en as pas besoin, ça sert pour utiliser la DLL à partir d'un programme C/C++. C'est une sorte de "wrapper" pour ne pas avoir besoin de gérer soi-même les LoadLibrary, GetProcAddress, etc. En .NET c'est inutile.

    Citation Envoyé par TERRIBLE Voir le message
    dois je déclarer des constantes dans mon programme et si oui lesquelles et comment ?
    Effectivement ça peut être utile... déclare les constantes que tu es susceptible de passer aux fonctions de la DLL (ou de recevoir en retour). Ce n'est pas obligatoire, mais c'est quand même plus lisible que des valeurs numériques "en dur". Pour les déclarer, utilise simplement la syntaxe habituelle avec le mot-clé const, en prenant les valeurs indiquées dans les headers C++.

    Citation Envoyé par TERRIBLE Voir le message
    dans l'essemble joint qui est en c++ a quoi correspond le choix entre dllimport et dllexport;
    Ca indique juste que ce sont des fonctions exportées par la DLL, ou au contraire importées de la DLL. La DLL est compilée avec la constante de compilation IMONVFD_EXPORT, de façon à ce que les fonctions soient considérées comme des exports. Les programmes C/C++ qui utilisent la DLL sont compilées sans cette constante, de façon à ce que les fonctions soient considérées comme des imports...
    Pour l'utilisation à partir de .NET, tu peux ignorer ces attributs.

    Citation Envoyé par TERRIBLE Voir le message
    A quoi correspond les instructions suivante

    Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    #ifdef __cplusplus
    extern "C" {
    #endif
     
    #ifdef __cplusplus
    }	//	extern "C"
    #endif
    Ca ne correspond à rien en .NET, tu peux l'ignorer. C'est une petite finesse de C++ dont j'ai oublié l'utilité...


    De toutes façons, je pense que tu y verras plus clair après avoir lu les tutos que je t'ai indiqués

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    352
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 352
    Points : 149
    Points
    149
    Par défaut
    Merci pour ta réponse mais je suis toujours confronté à l'impossibilité d'utiliser mes fonctions dll .
    J'ai psitionner ce ficher dans mon fichier de projet et j'ai écrit le peitit porgramme suivant qui via le bouton doit charger le dll.
    Mais j'ai systématiquement ce message


    Impossible de charger la DLL 'SG_VFD.dll': Le module spécifié est introuvable. (Exception de HRESULT : 0x8007007E)

    Que dois faire SVP où est mon erreur ?

    par avance merci

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 753
    Points
    39 753
    Par défaut
    la DLL doit être dans le même répertoire que l'exécutable (en général dans bin/Debug)

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

Discussions similaires

  1. utilisation de DllImport("user32.dll",
    Par WBO dans le forum VB.NET
    Réponses: 4
    Dernier message: 09/12/2008, 23h52
  2. utiliser les tag [MFC] [Win32] [.NET] [C++/CLI]
    Par hiko-seijuro dans le forum Visual C++
    Réponses: 8
    Dernier message: 08/06/2005, 15h57
  3. utilisation du meta type ANY
    Par Anonymous dans le forum CORBA
    Réponses: 1
    Dernier message: 15/04/2002, 12h36
  4. [BCB5] Utilisation des Ressources (.res)
    Par Vince78 dans le forum C++Builder
    Réponses: 2
    Dernier message: 04/04/2002, 16h01
  5. Réponses: 2
    Dernier message: 20/03/2002, 23h01

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