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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Ingénieur vision
    Inscrit en
    Janvier 2013
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    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
    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
    Membre Expert

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    2 067
    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 067
    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
    Membre averti
    Homme Profil pro
    Ingénieur vision
    Inscrit en
    Janvier 2013
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    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
    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
    Membre Expert

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    2 067
    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 067
    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
    Membre averti
    Homme Profil pro
    Ingénieur vision
    Inscrit en
    Janvier 2013
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    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
    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
    Membre Expert

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    2 067
    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 067
    Par défaut
    Au pire copie la dans Sytem32 et regarde si ça fonctionne comme ça.

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