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

Windows Forms Discussion :

[C#, dll] dll à emplacement variable


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    349
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Avril 2006
    Messages : 349
    Par défaut [C#, dll] dll à emplacement variable
    Bonjour,

    Je développe une petite application en C# qui fait appel à des fonctions contenues dans une dll écrite en C. J'arrive à faire le [DllImport] mais à condition que ma dll se trouve dans un dossier précis.

    Mais étant donné que ma dll se trouve dans le même dossier que mon application, l'emplacement de ma dll peut également changer et l'application ne trouve plus la dll... Comment remédier à ça ?

    J'ai essayé des choses en récupérant le dossier de l'application mais ça coince au niveau du [DllImport] qui ne veut bien prendre qu'une chaîne de caractères...

    ++

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    238
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 238
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Application.StartupPath;
    Te permet de récupérer le repértoire de l'exe lancé sous forme de String ca devrait résoudre ton problème.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    349
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Avril 2006
    Messages : 349
    Par défaut
    Merci, ça me simplifie un peu la vie mais ça ne résoud pas mon problème. Voici un bout de code pour illustrer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    static string apppath = Application.StartupPath;
    static string dllpath = apppath + "\\dll\\interface.dll";
     
    [DllImport("c:\\dll\\interface.dll")]
    static extern void interface__open
    (
         int used_port,
         long supply_voltage
    );
    En fait il faudrait que je puisse faire (je sais que ce n'est pas bon mais ça illustre...) :
    ++

  4. #4
    Membre émérite
    Avatar de SnakemaN
    Profil pro
    Bidouille-tout Android
    Inscrit en
    Juillet 2006
    Messages
    871
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Bidouille-tout Android

    Informations forums :
    Inscription : Juillet 2006
    Messages : 871
    Par défaut
    Et pourquoi ca ne marcherai pas ? tu as essayé, ca donne quoi ?

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    349
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Avril 2006
    Messages : 349
    Par défaut
    J'ai un message d'erreur :

    Erreur 1 Un argument d'attribut doit être une expression constante, une expression typeof ou une expression de création de tableau

  6. #6
    Membre émérite
    Avatar de SnakemaN
    Profil pro
    Bidouille-tout Android
    Inscrit en
    Juillet 2006
    Messages
    871
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Bidouille-tout Android

    Informations forums :
    Inscription : Juillet 2006
    Messages : 871
    Par défaut
    A la je peux pas t'aider plus que ca...je n'y connais pas trop en C# mais c'est bizarre car tes 2 chaines sont declarées en Static String...

  7. #7
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    238
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 238
    Par défaut
    Il te faut une constante donc le Applicaiton.startUp va pas t'être util je pense. Mais peux-tu utiliser un chemin relatif genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    [DllImport("\\dll\\interface.dll")]
    et tu met ta DLL dans un repertoire DLL au même niveau que ton exe.
    Pour tester !

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

Discussions similaires

  1. Dll avec des variables globales
    Par declencher dans le forum Débuter
    Réponses: 2
    Dernier message: 03/04/2008, 07h31
  2. [VBA-E]insérer une ligne à un emplacement variable
    Par DomBourti dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 27/04/2006, 17h07
  3. msimg32.dll (dll pour faire des gradiants) VB6 et innosetup
    Par hpfx dans le forum Installation, Déploiement et Sécurité
    Réponses: 4
    Dernier message: 25/04/2006, 20h53
  4. [DLL] partage de variables globales
    Par tut dans le forum MFC
    Réponses: 5
    Dernier message: 29/02/2004, 10h17
  5. [VB6] [DLL] DLL à instance unique
    Par HPJ dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 19/09/2003, 08h07

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