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++Builder Discussion :

DLL et classes


Sujet :

C++Builder

  1. #1
    Membre éprouvé
    Avatar de Sunchaser
    Homme Profil pro
    OPNI (Objet Programmant Non Identifié)
    Inscrit en
    Décembre 2004
    Messages
    2 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : OPNI (Objet Programmant Non Identifié)
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 059
    Par défaut DLL et classes
    Bonjour a tous (ou bonsoir voire peut etre bonne nuit...),
    Suivant les enseignements des differents tutoriels du site, comme ceux de 'LFE' sur les DLL, je me suis débrouillé pour apprendre a faire des p'tites Dlls et utiliser des fonctions exportées de celles ci. Déja grand merci a ceux qui bossent pour Developpez.Com , tout seul a l'aveugle j'aurai eut du mal.
    Bon mais je me casse le nez sur une 'DLL de classe', tout en ayant suivi les conseils de l'auteur cité ci dessus.
    Je voulais tenter de créer par ce biais une form de manière dynamique ainsi qu'ajouter de la meme manière des composants a celle ci.
    La Dll est bien compilée, le .lib ajouté au projet initial, le .h est inclus et j'accède bien aux membres de ma classe lors que je code mais a l'execution j'obtient plutot 'Ressource non trouvée'...
    Quelqu'un sait il ou je dois chercher pour avoir de nouveaux exemples d'utilisation de Dll de ce type ?
    Voir un bouquin précis qqpart, un cours ?...
    Et pourquoi pas, un petit peu de code d'un programmeur éclairé ?
    Merci

  2. #2
    Membre éprouvé
    Avatar de Sunchaser
    Homme Profil pro
    OPNI (Objet Programmant Non Identifié)
    Inscrit en
    Décembre 2004
    Messages
    2 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : OPNI (Objet Programmant Non Identifié)
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 059
    Par défaut
    Bonsoir,
    Bon je vais essayer de préciser un petit peu, pour peut etre relancer une ame charitable...

    .h du coté DLL :
    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
    #ifdef __DLL__
    #define IMPORT_EXPORT __declspec(dllexport)
    #else
    #define IMPORT_EXPORT __declspec(dllimport)
    #endif
     
    //---------------------------------------------------------------------------
    #include <Classes.hpp>
    #include <Controls.hpp>
    #include <StdCtrls.hpp>
    #include <Forms.hpp>
    //etc...si besoin
    //---------------------------------------------------------------------------
    IMPORT_EXPORT class TCadre: public TFrame
    {
    __published:
                     //	 
    private:	
                    //
    public:		
                    TListView *NList;
                    //etc ...si besoin
            __fastcall TCadre(TComponent* Owner);
     
    };
    //---------------------------------------------------------------------------
    extern TCadre *Cadre;
    .cpp du coté DLL :
    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
    #include <vcl.h>
    #include <windows.h>
    #include <vcl\Forms.hpp>
    //...
    #pragma hdrstop
     
    #include "CadreCommun.h"
    //---------------------------------------------------------------------------
     
    TCadre *Cadre;
     
    #pragma argsused
    int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void* lpReserved)
    {
            return 1;
    }
    //---------------------------------------------------------------------------
     
    __fastcall TCadre::TCadre(TComponent* Owner):TFrame(Owner)
    {
    Cadre->Height = 305;
    Cadre->Width = 520;
    Cadre->Top = 100;
    Cadre->Left = 100;
    // .....
    }
    //...etc
    du coté de l'exe, le .lib de la DLL est ajoutée au projet,
    dans le .cpp j'ai précisé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    #include "CadreCommun.h"
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    #pragma link "CadreCommun"
    puis je tente :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    NCadre = new TCadre(InscriptionConvive);
    Mais j'obtient 'TCadre, ressource non trouvée ...'.
    J'ai forcement oublié qqchose, c'est surement évident mais ...je trouve pas
    Merci d'avance...

  3. #3
    Membre éprouvé
    Avatar de Sunchaser
    Homme Profil pro
    OPNI (Objet Programmant Non Identifié)
    Inscrit en
    Décembre 2004
    Messages
    2 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : OPNI (Objet Programmant Non Identifié)
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 059
    Par défaut
    Bonsoir,
    Bon, je vois que je ne fais pas succès avec ma p'tite question !
    Je suis allé voir dans la page 'Options' du projet, sur l'onglet Lieur évolué, et j'y ait trouvé l'option ' Dll retardées '.
    J'ai indiqué la Dll utilisée puis reconstruit le projet.
    Suis - je sur la piste ?
    Brules - je ?
    Un petit indice ...?

  4. #4
    Membre éprouvé
    Avatar de Sunchaser
    Homme Profil pro
    OPNI (Objet Programmant Non Identifié)
    Inscrit en
    Décembre 2004
    Messages
    2 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : OPNI (Objet Programmant Non Identifié)
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 059
    Par défaut
    Bonsoir,
    L'idée 'Dll retardées' dans les options du lieur etait mauvaise.
    Il semble que quoi que je fasse pour l'instant lorsque je lance :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    TCadre *NCadre;
    NCadre = new TCadre(InscriptionConvive);
    NCadre soit toujours = NULL.
    Ce qui ne m'arrange pas vraimment.
    Alors pour attiser la petite soixantaine de personnes qui ont lu mes messages, j'ai du Chateau Margaux Grand Cru Classé en stock....
    Alors ? Toujours pas de petit indice pour moa
    Merci...

  5. #5
    Membre Expert

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    1 415
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 415
    Par défaut
    Salut !

    Je ne sais pas s'il y a un moyen précis, c'est à dire un code type.

    A titre perso, avec BCB3 Pro, si je cherche à faire ce que tu fais, à partir de fiches
    dérivées de TForm, dans un premier temps la fiche est éditée dans un projet qui peut
    être celui du projet principal. Lorsque cette phase d'édtion est terminée, la fiche est
    retirée du projet principal et je reconstruis le projet principal ainsi que la dll dont
    le rôle n'est alors que de créer une fiche à la demande de l'exé.

    Cela suppose chez moi d'avoir inclu dans le dll :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    #include "Form2.h" //la dll dispose donc de :  extern PACKAGE TForm2 *Form2;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    USEFORM("Unit2.cpp", Form2);
    Attention, car il peut y avoir un souci avec Application qui détient toutes les fiches.
    Le sujet à été abordée il y a quelques temps et en particulier il s'agissait de
    créer dynamiquement une MDIChild à partir d'une dll pour alimenter la MDIForm
    en MDIChild (novembre/décembre 2004). L'auteur avait résolu le problème !
    Donc faire une recherche sur ce forum !

    A plus !

  6. #6
    Membre éprouvé
    Avatar de Sunchaser
    Homme Profil pro
    OPNI (Objet Programmant Non Identifié)
    Inscrit en
    Décembre 2004
    Messages
    2 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : OPNI (Objet Programmant Non Identifié)
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 059
    Par défaut
    Bonsoir,

    Henderson, si tu lis ces lignes, encore merci j'y croyais plus trop a force de tourner en rond...c'etait vraimment important .
    Peut etre saurai je te renvoyer l'ascenceur un jour (on sait jamais si je progresse ! ).

  7. #7
    Membre éprouvé
    Avatar de Sunchaser
    Homme Profil pro
    OPNI (Objet Programmant Non Identifié)
    Inscrit en
    Décembre 2004
    Messages
    2 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : OPNI (Objet Programmant Non Identifié)
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 059
    Par défaut
    Bonsoir a tous,
    Henderson, si tu lis ces lignes, encore merci j'y croyais plus trop a force de tourner en rond...c'etait vraimment important .
    Peut etre saurai je te renvoyer l'ascenceur un jour (on sait jamais si je progresse ! ).

  8. #8
    Membre Expert

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    1 415
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 415
    Par défaut
    Salut !

    Pour info, s'il y a un souci avec Application (dans le genre bug quand on ferme le programme
    ou peut être si on ferme la fenêtre... on ne sait jamais) :

    http://www.developpez.net/forums/viewtopic.php?t=279534

    A plus !

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

Discussions similaires

  1. [DLL] et classes de la STL ?
    Par NiamorH dans le forum C++
    Réponses: 3
    Dernier message: 17/02/2009, 12h22
  2. Creation d'une DLL sans Classe ni méthode
    Par titan_33 dans le forum Général Dotnet
    Réponses: 2
    Dernier message: 22/09/2008, 16h48
  3. [windows] charger une dll (avec classe)
    Par superpok dans le forum Windows
    Réponses: 11
    Dernier message: 09/09/2007, 11h15
  4. Création de frame depuis des Dll de classes
    Par ogasse dans le forum Delphi
    Réponses: 2
    Dernier message: 31/08/2006, 12h51
  5. Dll de classe et variable
    Par SkYsO dans le forum Langage
    Réponses: 5
    Dernier message: 10/03/2006, 09h25

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