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 TForm


Sujet :

C++Builder

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre confirm�
    Profil pro
    Inscrit en
    F�vrier 2004
    Messages
    83
    D�tails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : F�vrier 2004
    Messages : 83
    Par d�faut DLL et TForm
    Bonjour,

    j'ai parcouru toute la recherche mais malheureusement je n'ai pas trouv� de r�ponse � ma question.

    J'utilise Borland c++ 2007 .

    J'ai deux projets.

    1�) Projet DLL :
    J'ai fais fichier-nouveau- DLL
    Il m'a cr�� un fichier .cpp . J'ai fais Fichier-Nouveau-Fiche . Un deuxi�me CPP s'est ouvert o� j'ai plac� un Bouton dessus. J'ai cr�� un �v�nement Onclick sur le bouton .

    Dans le Header du deuxi�me CPP j'ai plac� tout en haut :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
     
    #ifdef __DLL__
    #define IMPORT_EXPORT __declspec(dllexport)
    #else
    #define IMPORT_EXPORT __declspec(dllimport)
    #endif
    Et j'ai remplac�
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    Class TFXXXX : public TForm
    par
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    IMPORT_EXPORT class TFXXXX
    En r�sum� :
    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
     
    #ifdef __DLL__
    #define IMPORT_EXPORT __declspec(dllexport)
    #else
    #define IMPORT_EXPORT __declspec(dllimport)
    #endif
     
     
    #ifndef ps_classH
    #define ps_classH
    //---------------------------------------------------------------------------
    #include <Classes.hpp>
    #include <Controls.hpp>
    #include <StdCtrls.hpp>
    #include <Forms.hpp>
     
    IMPORT_EXPORT class TFXXXX : public TForm
    {
    __published:	// Composants gérés par l'EDI
    	TButton *Button1;
    	void __fastcall Button1Click(TObject *Sender);
    private:	// Déclarations utilisateur
    public:		// Déclarations utilisateur
    	__fastcall TFXXXX (TComponent* Owner);
    };
    #endif
    Malheureusement Je n'ai pas pu remplacer les __fastcall par du __stdcall

    J'ai compil�, il m'a g�n�r� deux fichiers : Lib et DLL

    2�) Projet EXE
    J'ai cr�� un simple projet EXE. QUi fonctionne et qui n'affiche qu'une FORM vide.
    J'ai ajout� le fichier lib dans le projet
    J'ai copi� le fichier DLL dans le m�me r�pertoire que l'EXE
    J'ai inclus le fichier .H du DLL pour que les class soient reconnues

    Ensuite dans le CPP du projet j'ai cr�� un �v�nement onclick d'un bouton plac� par apr�s qui contient le code suivant :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
     
            TFXXXX*FXXXX;
    	FXXXX= new TFXXXX(this);
    Je compile

    H�l�s : erreur :
    LINK32 Erreur : 'TFXXXX::' externe non r�solu, r�f�renc� depuis .....obj


    Je suis � court d'id�e. Je ne vois pas d'autre solution que de vous demander.

    Je vous remercie d'avance

  2. #2
    Membre chevronn�

    Profil pro
    Inscrit en
    Juin 2005
    Messages
    351
    D�tails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2005
    Messages : 351
    Par d�faut
    Je ne sais pas s'il est possible d'int�grer directement une classe dans une DLL. C'est possible dans un package, mais je ne crois pas dans une DLL.

    La DLL expose des fonctions ou des variables.

    Moi je fais comme �a:

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    // Shortcut for exportation
    #define DLLCall  extern "C"
    #define DLLExport  __stdcall __declspec(dllexport,dllimport)
     
    //! Get the version number of the library
    DLLCall DLLExport int Version();

    Tu devrais pouvoir faire une fonction qui te retourne ton formulaire dans le genre:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    DLLCall DLLExport TFXXXX* CreateXXXXForm(TObject* Owner) {
     
      return new TFXXXX(Owner);
     
    }

  3. #3
    Membre confirm�
    Profil pro
    Inscrit en
    F�vrier 2004
    Messages
    83
    D�tails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : F�vrier 2004
    Messages : 83
    Par d�faut
    J'ai d�j� fais avec des classes simples o� il n'y a pas de Form � afficher. Cela n'a pas pos� de probl�me

    C'est quand j'utilise les classes des Forms que �a ne marche pas. � mon avis c'est d� � __fastcall qui ne peut �tre remplac� par du __stdcall .

    je vais voir avec ta m�thode.

  4. #4
    Membre confirm�
    Profil pro
    Inscrit en
    F�vrier 2004
    Messages
    83
    D�tails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : F�vrier 2004
    Messages : 83
    Par d�faut
    J'ai r�ussi ! Youppie... Merci !

    En partant de ton id�e, j'ai fais une recherche,

    j'ai vu mon erreur :

    c'est b�te mais bon :

    �a doit �tre comme �a :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    class IMPORT_EXPORT  TFXXXX
    et non
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    IMPORT_EXPORT  class  TFXXXX

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. TForm dans une DLL
    Par dgeodp dans le forum Langage
    R�ponses: 4
    Dernier message: 19/03/2008, 19h12
  2. R�ponses: 22
    Dernier message: 11/06/2007, 23h24
  3. dll dynamique et TForm en ShowModal
    Par declencher dans le forum Delphi
    R�ponses: 16
    Dernier message: 16/04/2007, 15h41
  4. TForm dans une dll appel�e dynamiquement
    Par declencher dans le forum Delphi
    R�ponses: 2
    Dernier message: 22/12/2006, 11h21
  5. TForm dans une DLL avec utilisation d'Interface
    Par guedelmalin dans le forum Langage
    R�ponses: 13
    Dernier message: 17/06/2005, 11h58

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