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 DLL native en C#


Sujet :

C#

  1. #1
    Membre habitué
    Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2010
    Messages
    382
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2010
    Messages : 382
    Points : 174
    Points
    174
    Par défaut utilisation DLL native en C#
    Bonjour,
    je veux savoir si c'est possible d'utiliser une dll native, développée en MFC, dans une application C#.
    Si c'est possible, comment?
    Merci

  2. #2
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Points : 5 194
    Points
    5 194
    Par défaut
    bonjour

    oui c'est possible

    Faut juste chercher dans le forum, ya plein de réponses

  3. #3
    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 : 42
    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 754
    Points
    39 754
    Par défaut
    Citation Envoyé par theMonz31 Voir le message
    oui c'est possible

    Faut juste chercher dans le forum, ya plein de réponses
    Pour une DLL native en C, oui... à mon avis pour du MFC c'est une autre paire de manches. P/Invoke ne permet pas de manipuler des classes C++ à ma connaissance, je crois qu'il faut obligatoirement passer par un wrapper en C++/CLI (mais je serais ravi de me tromper...)

  4. #4
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Points : 5 194
    Points
    5 194
    Par défaut
    cela n'a rien à voir avec les MFC...

    Par contre, avec P/Invoke, on ne peut appeler que des méthodes exposées par la DLL.. après, rien n'empeche l'implémentation de la DLL de s'appuyer sur des classes MFC, ou autres...

    Par contre, avec un wrapper C++/CLI, on peut facilement utiliser du code C++ MFc mais, faut faire un peu de code

  5. #5
    Membre habitué
    Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2010
    Messages
    382
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2010
    Messages : 382
    Points : 174
    Points
    174
    Par défaut
    Merci pour les explications
    Dans le code C++ de la dll, il y a des méthodes qui prennent comme paramètres des tableaux et aussi un passage par référence or le c# , à ma simple connaissance, ne supporte pas le passage par référence(Si je me trempe pas)
    alors comment faire??
    Merci

  6. #6
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Points : 5 194
    Points
    5 194
    Par défaut
    le passage par ref fonctionne en C#

    Il existe (je sais plus ou sur le site de microsoft) un tableau indiquant les types C# correspondant aux types C++ pour "conversion" !!!

    Le mot clé "ref" existe en C#...

  7. #7
    Membre habitué
    Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2010
    Messages
    382
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2010
    Messages : 382
    Points : 174
    Points
    174
    Par défaut
    Bonjour,
    Je crois que je me suis mal exprimée,en fait je veux passer des valeurs par référence car les méthodes dans ma dll passe des tableaux et des variables par référence
    Merci

  8. #8
    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 442
    Points
    4 442
    Par défaut APPELER DLL MFC en C#
    Bonjour,
    si c'est uniquement des fonctions que tu appelles P/Invoke resout le probleme.

    si c'est des classes que tu veux utiliser directement en c# ou en vb.net il faut:

    1/ si c'est des fichiers dll Com c.a.d MFC ATL ou composants COM MFC l'outil tlbimp.exe(importateur de librairie d'interface de types de l'activex com) genere un assembly dll wrapper pour la dll d'origine(du genre microsoft.office.interop.dll).
    2/ si c'est une dll ordinaire comme il a ete dit par les membres il faut ecrire soit meme un wrapper c++/cli de tes classes.Cest rebarbatif ,beaucoup de code.

    3/troisieme voie c'est generer le fichier IDL dans ta dll (c.à.d la transformer en COM en specifiant la liste des types à exporter (classes,fonctions,variables,structures etc...) .Le compilateur c++ cree un fichier .idl et surtout un fichier .tlb incorporee dans le binaire.
    c'est celui la qui est lu par tlbimp.exe pour generer le wrapper de sortie dll pour net.

    regarde sur le site codeplex tu trouveras all-in-one net framework pour des exemples (en particulier le dernier).
    bon code....

  9. #9
    Membre habitué
    Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2010
    Messages
    382
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2010
    Messages : 382
    Points : 174
    Points
    174

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

Discussions similaires

  1. utilisation d'un dll native en C#
    Par sysalpha dans le forum C#
    Réponses: 13
    Dernier message: 27/01/2011, 11h48
  2. [VB2005] Utilisation de DLL native cryptée
    Par nikoko34 dans le forum VB.NET
    Réponses: 12
    Dernier message: 01/08/2007, 15h42
  3. Utilisation d'une dll native par une toolbar managée
    Par didierll dans le forum C++/CLI
    Réponses: 1
    Dernier message: 10/07/2007, 07h56
  4. [C# 2.0] Utilisation d'un IntPtr par une dll native
    Par SesechXP dans le forum C++/CLI
    Réponses: 5
    Dernier message: 05/07/2007, 15h00
  5. Réponses: 2
    Dernier message: 28/05/2006, 11h34

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