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

Langages Discussion :

Dll c++ et C#


Sujet :

Langages

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur vision
    Inscrit en
    Janvier 2013
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur vision
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2013
    Messages : 23
    Points : 29
    Points
    29
    Par défaut Dll c++ et C#
    Bonjour à tous,

    Je tente d'utiliser une dll, nom : Calibration.dll , écrite en c++ pour du 32 bit, dans un programme c#. J'ai créé une classe c# nommé "Calibration.cs" qui contient mes méthodes importer de la dll grâce à DllImport.

    Voici mes lignes de code posant problème :

    [DllImport("C:\\Users\\foxaltex\\Documents\\Visual Studio 2008\\Projects\\CalibrationProject\\CalibrationProject\\bin\\Debug_x86\\Calibration.dll")]
    public static extern int Apply_Calibration(string src_img_filename, string dst_img_filename);

    Et j'ai le très embêtant message : Une exception non gérée du type 'System.DllNotFoundException' s'est produite dans CalibrationProject.exe
    Informations supplémentaires*: Impossible de charger la DLL 'C:\Users\foxaltex\Documents\Visual Studio 2008\Projects\CalibrationProject\CalibrationProject\bin\Debug_x86\Calibration.dll' Le module spécifié est introuvable. (Exception de HRESULT : 0x8007007E)

    Pourtant, ma dll est bien dans le même répertoire que le .exe de mon application (je suis en Debug, x86, car utilisation finale sur du 32 bit).

    J'ai fais le tour des forums depuis deux jours, j'ai cherché sur différents site, tester les solutions que je comprenais, rien n'y fait, ça ne fonctionne pas ! Quelqu'un aurait-il une solution à me proposer ?

    Merci d'avance !

    PS : j'ai déjà travaillé sur un programme c# faisant appel à une dll (plus conséquente que celle que j'utilise mais créer de la même façon) et je n'avais pas de problème de liaison entre la dll et mon programme c#.

  2. #2
    Expert confirmé

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    2 065
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 2 065
    Points : 4 229
    Points
    4 229
    Par défaut
    Si elle est dans le même répertoire pourquoi mettre le chemin complet et pas seulement le nom de la dll ?

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur vision
    Inscrit en
    Janvier 2013
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur vision
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2013
    Messages : 23
    Points : 29
    Points
    29
    Par défaut
    Bonjour,

    youtpout978 : c'est ce que je faisais au début mais quand j'ai vu que le programme ne trouvait pas la .dll, j'ai voulu tenter de mettre le nom du répertoire complet (je me suis dis qu'il y avait peut-être un problème de ce côté là). Mais rien n'a changé haha.

  4. #4
    Expert confirmé

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    2 065
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 2 065
    Points : 4 229
    Points
    4 229
    Par défaut
    Est-ce que le nom de la DLL est le bon? l'extension aussi?
    Comment mets tu ta DLL dans le dossier de sortie de l'exe

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur vision
    Inscrit en
    Janvier 2013
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur vision
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2013
    Messages : 23
    Points : 29
    Points
    29
    Par défaut
    Bonjour,

    youtpout978 : je me suis dis que le nom de la dll n'était pas le bon, alors j'ai copié le nom de la dll, qui est "Calibration.dll", pour le coller lors de l'appel avec [DllImport(Calibration.dll)]. Je me suis donc assuré avec ce moyen que le nom de la dll appelé est bien le même que mon fichier .dll.

    Je crée la dll, je récupère le fichier dans mon répertoire "Release", et je le colle dans le répertoire de sortie de mon application, où se trouve le .exe donc.

    Je fais appel à une autre dll, nommé "MyFonctions.dll". J'utilise une fonction de "MyFunctions.dll" (la fonction se nomme "MyFunctions_Initialisation()") juste avant d'utiliser une fonction de "Calibration.dll" (qui se nomme "Calibration_Init()") de la façon suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
           public Form1()
            {
                InitializeComponent();
                MyFonctions.MyFonctions_Init("");                                // Initialisation de la bibliothèque MyFonctions (MyFunctions.dll), pour le traitement d'image
                Calibration.Calibration_Init(g_CalibrationFile, g_camera); // Initialisation de la bibliothèque Calibration (Calibration.dll), vérification s/n caméra ici
            }
    La fonction de MyFunctions.dll fonctionne très bien, mais dès que je passe à la fonction de Calibration.dll, j'ai le message d'erreur... Pourtant j'ai créé les dll de la même façon ! Et MyFunctions.dll ne se trouve pas dans le répertoire de sortie du .exe de l'application, mais fonctionne... je n'y comprends plus rien ! haha

  6. #6
    Expert confirmé

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    2 065
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 2 065
    Points : 4 229
    Points
    4 229
    Par défaut
    Au pire copie la dans Sytem32 et regarde si ça fonctionne comme ça.

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur vision
    Inscrit en
    Janvier 2013
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur vision
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2013
    Messages : 23
    Points : 29
    Points
    29
    Par défaut
    Bonjour,

    youtpout978 : je viens de tenter, ne fonctionne pas non plus... Bouhouhou je suis désesperé !

  8. #8
    Membre actif
    Homme Profil pro
    Analyste Programmeur
    Inscrit en
    Septembre 2008
    Messages
    176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2008
    Messages : 176
    Points : 297
    Points
    297
    Par défaut
    Bonjour,

    Tu peux avoir ce message si la dll n'est pas à l'endroit spécifier,
    ou si l'une de ses dépendances n'est pas trouvée.
    Attention, les dépendances doivent être avec l'exe ou dans le Path, etc ..

    Bonne continuation.
    L’aléatoire n’existe pas en informatique, c’est juste un moyen de dire que l’on a pas encore compris.

  9. #9
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur vision
    Inscrit en
    Janvier 2013
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur vision
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2013
    Messages : 23
    Points : 29
    Points
    29
    Par défaut
    Bonjour,

    Kyroon : parles-tu des dépendances de la dll ou de mon projet ?

  10. #10
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur vision
    Inscrit en
    Janvier 2013
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur vision
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2013
    Messages : 23
    Points : 29
    Points
    29
    Par défaut
    Bonjour,

    Je up la discussion, j'ai toujours le problème et je n'arrive pas à trouver une solution...

    Merci, d'avance de votre aide,

    Foxaltex

  11. #11
    Expert confirmé

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    2 065
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 2 065
    Points : 4 229
    Points
    4 229
    Par défaut
    Je pense qu'il parlait des dépendances de la DLL, elle a peut être elle même besoin d'autre DLL pour fonctionner.

  12. #12
    Membre émérite
    Avatar de DelphiManiac
    Homme Profil pro
    Homme à tout faire
    Inscrit en
    Mars 2002
    Messages
    1 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Homme à tout faire
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 147
    Points : 2 533
    Points
    2 533
    Par défaut
    Essaye d'utiliser DependencyWalker http://www.dependencywalker.com/ sur ta dll pour vérifier que tu n'as pas louper une dépendance.
    Si ce message vous a semblé utile, il est possible qu'il soit utile à d'autres personnes. Pensez au . Et n'oubliez pas le le moment venu !

    On n'a pas à choisir si l'on est pour ou contre la décroissance, elle est inéluctable, elle arrivera qu'on le veuille ou non.

Discussions similaires

  1. [CR] Infos sur l'utilisation de dll
    Par step dans le forum SAP Crystal Reports
    Réponses: 11
    Dernier message: 09/08/2002, 11h35
  2. Declarer une dll Delphi ?
    Par DelphiCool dans le forum C++Builder
    Réponses: 2
    Dernier message: 26/07/2002, 10h07
  3. Débug de DLL
    Par Bayard dans le forum C++Builder
    Réponses: 3
    Dernier message: 22/07/2002, 15h08
  4. Equivalent à ExeName pour une DLL
    Par Smortex dans le forum Langage
    Réponses: 7
    Dernier message: 16/07/2002, 21h07
  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