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

MFC Discussion :

Création de DLL


Sujet :

MFC

  1. #1
    Membre régulier
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2006
    Messages
    350
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2006
    Messages : 350
    Points : 121
    Points
    121
    Par défaut Création de DLL
    Voila il me faudrait une DLL
    Avec une interface pas visible sauf quant on le demande.
    Avec des méthode.


    j'ai lu le faq et j'ai strictement rien compris. Ce que me génère Visual6 ne correspond carrément pas a ce qui est donné.
    J'ai testé tout ce qui pourrait resemblé au mot DLL ... et rien ne va.

    Je fais quoi exactement ?

    Merci d'avance.

  2. #2
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 381
    Points : 41 582
    Points
    41 582
    Par défaut
    Ben, déjà, il y a plusieurs types de DLL, alors de là à savoir lequel tu cherche...
    • Une simple DLL, qui exporte des fonctions C ou extern "C" ?
    • Une DLL qui exporte des classes C++ ?
    • Une DLL C++ qui utilise MFC ?
    • Une DLL d'extension MFC ?
    • Un composant COM ? (si tu ne connais pas, c'est que tu ne veux pas ça)
    • Une DLL ATL COM ? (même remarque)

    Et je dois en oublier...

  3. #3
    Membre régulier
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2006
    Messages
    350
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2006
    Messages : 350
    Points : 121
    Points
    121
    Par défaut
    ben surement ca car il me faut avoir une interface.

    Et comme la reponse a la question entre parenthèse est "je ne connait pas" ben il ne reste plus grand chose.

    • Une DLL C++ qui utilise MFC ?


    Pour faire ca je dois utiliser le wizard et faire un shared MFC ?

  4. #4
    Membre éprouvé
    Avatar de Gabrielly
    Inscrit en
    Juin 2004
    Messages
    722
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 722
    Points : 1 128
    Points
    1 128
    Par défaut
    ben surement ca car il me faut avoir une interface.

    Et comme la reponse a la question entre parenthèse est "je ne connait pas" ben il ne reste plus grand chose.

    Une DLL C++ qui utilise MFC ?

    Pour faire ca je dois utiliser le wizard et faire un shared MFC ?
    Ben tu as encore le choix entre :

    une dll régulière MFC
    une dll d'extension MFC

    qui t'offre toutes les deux des interfaces.
    Ma

  5. #5
    Membre éprouvé
    Avatar de Gabrielly
    Inscrit en
    Juin 2004
    Messages
    722
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 722
    Points : 1 128
    Points
    1 128
    Par défaut
    L'application cliente qui va utiliser ta DLL est-elle une appli MFC?

    Si oui alors DLL MFC d'extension ou DLL MFC régulière
    Si non alors DLL MFC régulière


  6. #6
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 381
    Points : 41 582
    Points
    41 582
    Par défaut
    Sur les DLLs :
    http://msdn.microsoft.com/library/de..._.overview.asp

    PS : qu'est-ce que tu appelles "interface" précisément ?
    • Des interfaces COM ?
    • des fonctions d'Interface Graphique ? (qu'on peut très bien faire sans MFC, dans une certaine mesure)
    • L'interface des fonctions ?

  7. #7
    Membre régulier
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2006
    Messages
    350
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2006
    Messages : 350
    Points : 121
    Points
    121
    Par défaut
    Par interface, j'appelle une fenetre avec des bouton et co.

    Mon programme appelé projet2 est un truc MFC avec une interface d'utilisation.
    Ce programme a plusieur chose a faire, qui sont lié par cette ineterface.

    Recupéré une image sur une camera
    Traiter une image
    Déplacer un indexeur avec une liaison GPIB
    Faire des statistique et un histogramme.



    La caméra était déja faite par common vision.
    Chaqu'une de ces partie possède un bouton setup qui ouvre une interface qui permet de modifier les paramètres.
    Cette interface devrait etre indépendante de l'interface principale (ce serait le mieux) et les paramètre sauvegardé pour une future utilisation.
    Cahque partie du projet possedera sa propre dll.

  8. #8
    Membre régulier
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2006
    Messages
    350
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2006
    Messages : 350
    Points : 121
    Points
    121
    Par défaut
    aller comme vous avez l'air emballer, petite question subsidiaire pour départager les gagnant (desolé Bad jock)

    J'ai testé une dll sans extension (normalement), j'ai ajouter mes classes et methode. J'ai egalement ajouter une interface.
    Le but etant de pouvoir modifier une valeur se seuil.

    J'ai déja une arrete pour un truc qui n'est pas de moi.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
     
    void CTraitement2App::OnSeuilPlus()
    {
    	Seuil++;
    	CString st = "";
    	st.Format ("%ld",Seuil);
    	SetDlgItemText(IDC_SEUIL,st);
    }
     
    void CTraitement2App::OnSeuilMoins() 
    {
    	Seuil--;
    	CString st = "";
    	st.Format ("%ld",Seuil);
    	SetDlgItemText(IDC_SEUIL,st);
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    --------------------Configuration: Traitement2 - Win32 Debug--------------------
    Compiling...
    Traitement2.cpp
    D:\crocis\PROJET2\Traitement2\Traitement2.cpp(82) : error C2660: 'SetDlgItemTextA' : function does not take 2 parameters
    D:\crocis\PROJET2\Traitement2\Traitement2.cpp(90) : error C2660: 'SetDlgItemTextA' : function does not take 2 parameters
    Error executing cl.exe.
     
    Traitement2.dll - 2 error(s), 0 warning(s)
    ce code etait une bidouille que j'ai vu sur le site pour eviter le Spin
    Seuil est une variable de la Dll. Ce sera un seuil de binarisation.

  9. #9
    Membre éprouvé
    Avatar de Gabrielly
    Inscrit en
    Juin 2004
    Messages
    722
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 722
    Points : 1 128
    Points
    1 128
    Par défaut
    Il faut passer l'handle de la dialogue
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    WINUSERAPI
    BOOL
    WINAPI
    SetDlgItemTextA(
        IN HWND hDlg,   // ici
        IN int nIDDlgItem,
        IN LPCSTR lpString);

  10. #10
    Membre régulier
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2006
    Messages
    350
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2006
    Messages : 350
    Points : 121
    Points
    121
    Par défaut
    ok et dans un projet ou il y a directement une denetre il n'était pas necessaire de le faire !!!

    Comment je recupère le handel de la fenetre ? Car je suis dans une dll et c'est moi qui l'ai ajouter a la main la fentre !

  11. #11
    Membre régulier
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2006
    Messages
    350
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2006
    Messages : 350
    Points : 121
    Points
    121
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    m_Img_Modif=TraiterIMG(m_Img_temp);
    dans mon projet, j'ajoute ma librairie avec #pragma comment (lib, "Traitement2.lib")

    et loursque j'utilise la fonction, il ne me la trouve pas !!!

  12. #12
    Membre expert
    Avatar de hiko-seijuro
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    2 011
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 011
    Points : 3 065
    Points
    3 065
    Par défaut
    t'as inclus le .h ?

  13. #13
    Membre régulier
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2006
    Messages
    350
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2006
    Messages : 350
    Points : 121
    Points
    121
    Par défaut
    oui mais je l'avais pas jouter au projet !!!
    j'ai l'impression de faire plusieur fois les meme truc !!!


    Maintenant j'ai ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    --------------------Configuration: Projet_2_3 - Win32 Debug--------------------
    Compiling...
    Projet_2_3Dlg.cpp
    D:\crocis\PROJET2\projet_2_3\Projet_2_3\Projet_2_3Dlg.cpp(368) : error C2352: 'CTraitement2App::TraiterIMG'
             : illegal call of non-static member function
            d:\crocis\projet2\traitement2\traitement2.h(33) : see declaration of 'TraiterIMG'
    Error executing cl.exe.
     
    Projet_2_3.exe - 1 error(s), 0 warning(s)
    dans mon fichier .cpp il y a :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    #include "Traitement2.h"
    ...
    #pragma comment (lib, "Traitement2.lib")
     
    ...
     
    m_Img_Modif=CTraitement2App::TraiterIMG(m_Img_temp);
    je suis completement pomé la ...

  14. #14
    Membre régulier
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2006
    Messages
    350
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2006
    Messages : 350
    Points : 121
    Points
    121
    Par défaut
    ou peut etre c'est par ce que je dis pas que c'est externe ou je ne sais quoi ???

    Des fois je vois ca extern(c)

    moi j'ai fais ca ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    class CTraitement2App : public CWinApp
    {
    private:
    	long	Seuil;
     
    public:
    	CTraitement2App();
     
    	IMG		TraiterIMG(IMG in);
    	void	OnSeuilPlus();
    	void	OnSeuilMoins();
     
    	DECLARE_MESSAGE_MAP()
    };
    c'est le header de ma dll ... ca va ?

  15. #15
    Membre confirmé Avatar de Mayti4
    Inscrit en
    Février 2004
    Messages
    442
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 442
    Points : 488
    Points
    488
    Par défaut
    illegal call of non-static member function
    Soit tu mets TraiterIMG static, soit tu crées une instance de ta classe.

  16. #16
    Membre régulier
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2006
    Messages
    350
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2006
    Messages : 350
    Points : 121
    Points
    121
    Par défaut
    bon en fait on va faire simple, j'ai rien compris au dll.

    J'ai beau lire relire ... C'est tordu dans tout les sens.

    Pour la faire statique je fais comment ?




    Est ce qu'il y a un endroit ou c'est bien expliqué pour faire une dll ...

  17. #17
    Membre confirmé Avatar de Mayti4
    Inscrit en
    Février 2004
    Messages
    442
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 442
    Points : 488
    Points
    488
    Par défaut
    bon en fait on va faire simple, j'ai rien compris au dll.
    Là, c'est avec le c++ que tu as un problème.

    Pour la faire statique je fais comment ?
    static IMG TraiterIMG(IMG in);
    Notes que tu ne pourras pas utiliser 'Seuil' dans TraiterIMG.

    Pour instancier:

    CTraitement2App Trait;
    Trait.TraiterIMG(m_Img_temp);
    Là tu peux utiliser 'Seuil' dans TraiterIMG.

  18. #18
    Membre régulier
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2006
    Messages
    350
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2006
    Messages : 350
    Points : 121
    Points
    121
    Par défaut
    ca avance mais ya toujours des truc bizzare, je pense qu'il trouve pas le dll

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    --------------------Configuration: Projet_2_3 - Win32 Debug--------------------
    Linking...
    Projet_2_3Dlg.obj : error LNK2001: unresolved external symbol "public: __thiscall CTraitement2App::CTraitement2App(void)" (??0CTraitement2App@@QAE@XZ)
    Projet_2_3Dlg.obj : error LNK2001: unresolved external symbol "public: static void * __cdecl CTraitement2App::TraiterIMG(void *)" (?TraiterIMG@CTraitement2App@@SAPAXPAX@Z)
    Debug/Projet_2_3.exe : fatal error LNK1120: 2 unresolved externals
    Error executing link.exe.
     
    Projet_2_3.exe - 3 error(s), 0 warning(s)

  19. #19
    Membre éprouvé
    Avatar de Gabrielly
    Inscrit en
    Juin 2004
    Messages
    722
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 722
    Points : 1 128
    Points
    1 128
    Par défaut
    bon en fait on va faire simple, j'ai rien compris au dll.

    J'ai beau lire relire ... C'est tordu dans tout les sens.
    Faire une dll s'est très simple.D'abord j'ai quelques questions.
    1. L'application cliente est-elle MFC?
    2. La dll est-elle une dll d'extension?
    3. CTraitement2App c'est quoi, est-ce une classe qui dérive de CWinApp?

  20. #20
    Membre confirmé Avatar de Mayti4
    Inscrit en
    Février 2004
    Messages
    442
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 442
    Points : 488
    Points
    488
    Par défaut
    Il faut exporter la classe dans la dll, et l'importer dans ton project.

    AFX_CLASS_EXPORT
    AFX_CLASS_IMPORT

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 3 123 DernièreDernière

Discussions similaires

  1. [VB.NET]Création de .dll contenant DataSet
    Par Razaphi dans le forum Windows Forms
    Réponses: 2
    Dernier message: 03/11/2006, 11h56
  2. Fichier XML -> Création de DLL
    Par Nounours666 dans le forum Langage
    Réponses: 11
    Dernier message: 19/11/2005, 18h36
  3. Problème création de DLL avec CString
    Par loupdeau dans le forum MFC
    Réponses: 3
    Dernier message: 21/07/2005, 20h55
  4. Création de DLL
    Par J. dans le forum Windows
    Réponses: 2
    Dernier message: 24/08/2004, 11h59
  5. Problème création de DLL
    Par monsieur.voie.lactee dans le forum C++Builder
    Réponses: 4
    Dernier message: 12/08/2003, 16h56

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