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 :

Utilisation d'une DLL C++ dans un projet C#


Sujet :

C#

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Février 2008
    Messages
    354
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Tunisie

    Informations forums :
    Inscription : Février 2008
    Messages : 354
    Points : 139
    Points
    139
    Par défaut Utilisation d'une DLL C++ dans un projet C#
    Bonjour,
    J'ai créé une Dll en c++ et j'ai voulu utiliser les classes ainsi que les méthodes de cette Dll dans un projet C#.
    EN faite pour importer une méthode, j'ai utiliser la ligne suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    [DllImport("Personne.dll")]
            public static extern int GetNote();
    Maintenant j'ai voulu importer une classe mais lorsque j'ai utilisé DllImport avec le nom de la classe comme suit:
    [DllImport("Personne.dll")]
    public static extern Personne();
    , un message d'erreur indique qu'il faut ajouter un type de retour. Or le constructeur n'a pas un type de retour.
    De plus j'ai des méthode dans la DLL dans lesquelles je passe les paramétres par références or C# ne supporte pas les références .
    Est ce qu'il y a quelqu'un qui peut m'aider?
    Merci

  2. #2
    Expert confirmé
    Inscrit en
    Avril 2008
    Messages
    2 564
    Détails du profil
    Informations personnelles :
    Âge : 64

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 564
    Points : 4 441
    Points
    4 441
    Par défaut UTILISER UNE CLASSE DANS DLL C++ EN C#
    BONJOUR,
    tu peux utiliser la methode dll import uniquement pour des functions (methode P/Invoke).

    tu ne peux utiliser cette methode quand c'est une classe c'est pour ca qu'il se sort le message argument de retour qui est n'existe que pour les fonctions.
    pour les classes c'est un peu plus complexe ,il faut passer par c++/cli.

    regarde sur ce post http://www.developpez.net/forums/d10...native-csharp/

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Février 2008
    Messages
    354
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Tunisie

    Informations forums :
    Inscription : Février 2008
    Messages : 354
    Points : 139
    Points
    139
    Par défaut
    Merci MABROUKI pour votre réponse,
    j'ai essayé maintenant d'importer seulement des fonctions à partir d'une DLL mais j'ai trouvé l'erreur suivante:
    Une exception non gérée du type 'System.DllNotFoundException' s'est produite dans ConsoleApplication1.exe

    Informations supplémentaires*: Impossible de charger la DLL 'Personne.dll': Le module spécifié est introuvable. (Exception de HRESULT : 0x8007007E)
    malgré que j'ai mis la DLL dans le bin/debug.
    J'ai pas trouvé la source du problème.
    Merci

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Février 2008
    Messages
    354
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Tunisie

    Informations forums :
    Inscription : Février 2008
    Messages : 354
    Points : 139
    Points
    139
    Par défaut
    Bonjour,
    J'ai cherché dans le net, je trouve que quelques réponses indiquent qu'il y a un manque d'une autre DLL liée à la DLl Personne.DLL.
    Or j'ai pas des autres Dll utilisé dans mon projet.
    j'ai utilisé #include <vector> et #include <iostream>.
    Est ce que le problème dû à l'utilisation de la bibliothèque du vector ou bien de la bibliothèque de iostream.

  5. #5
    Expert confirmé
    Inscrit en
    Avril 2008
    Messages
    2 564
    Détails du profil
    Informations personnelles :
    Âge : 64

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 564
    Points : 4 441
    Points
    4 441
    Par défaut dllimport pour une dll c++
    bonjour
    1/piste 1:
    -c'est executer hors environnement vs dans dossier debug directement.
    2/piste 2
    si ca persiste il faut voir de ce cote:
    -fais attention à la frappe du nom de fichier "Personne.dll" et à EntryPoint = "NomFonction".
    - rajouter le chemin en plus du nom fichier.
    bon code...

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 03/03/2010, 09h08
  2. Utilisation d'une Dll c# dans un projet c,c++
    Par hunter69fr2002 dans le forum C#
    Réponses: 2
    Dernier message: 07/02/2008, 16h20
  3. [COM] Comment utiliser une dll DotNet dans un projet win32 ?
    Par Marmottoc dans le forum API, COM et SDKs
    Réponses: 8
    Dernier message: 05/05/2006, 15h58
  4. Utilisation d'une phase prototypage dans un projet info
    Par Kiki31 dans le forum Langages de programmation
    Réponses: 5
    Dernier message: 28/07/2005, 20h44

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