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 :

.lib et #pragma link


Sujet :

C++Builder

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    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 .lib et #pragma link
    Suite � un autre message, je distribue mes classes sous la forme d'une librairie statique (.lib) et avec les headers (.h et .dfm pour les fiches)

    Pour utiliser ces fichiers, je dois:
    1) Inclure les fichiers .lib dans le projet
    2) Avoir les fichiers .h et .dfm dans un r�pertoire accessible pour les includes (r�pertoire du projet ou r�pertoire ajout� � l'option "Include search path")

    A ce moment, j'ai plusieurs cas o� tout fonctionne correctement. Par contre, d�s que j'utilise la JVCL, les fichiers indiqu�s par les "#pragma link" dans le code de la lib me cause une erreur.

    Par exemple:
    test.cpp contient un TJvTransparentButton. J'ai donc quatre pragma link ajout�s automatiquement pas BDS:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    #pragma package(smart_init)
    #pragma link "JvButton"
    #pragma link "JvComponent"
    #pragma link "JvExControls"
    #pragma link "JvTransparentButton"
    Le compilateur est heureux, mais le linker me fait syst�matiquement une erreur "Fatal: Unable to open file 'JVBUTTON.OBJ'". D'apr�s la doc sur les #pragma link, il fait un appriori sur une extention ".obj". Pourtant lorsque je link le m�me projet mais � partir du .cpp tout se passe bien!

    Quelqu'un a-t-il une id�e??

    PS: Il y a bien un fichier "JvButton.pas" dans le r�pertoire jvcl/run, mais l'inclure directement dans mon projet ne m'am�ne que d'autres erreurs...

  2. #2
    Membre �m�rite Avatar de 10_GOTO_10
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    890
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 890
    Par d�faut
    Pourquoi ne pas sp�cifier l'extension ?

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    #pragma link "JvButton.lib"
    Ou bien n'ai-je pas bien compris le probl�me ?

  3. #3
    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
    En fait, JvButton n'est pas une lib... Je ne sais pas exactement ce que c'est d'ailleurs car j'ai seulement trouv� un fichier JvButton.pas dans le r�pertoire de la jvcl. Probablement que le code objet se trouve dans l'un des package qu'installe la jvcl, mais il ne porte en tout cas pas le nom de JvButton.???

    Pour l'instant, j'ai sorti les fichiers � probl�me de ma librairie et les distribue en clair, mais ce n'est pas vraiment satisfaisant :-(

    J'ai aussi eu un probl�me avec une classe qui h�rite d'une autre classe se trouvant dans la librairie.

    Exemple:
    1) la librairie contient une classe "toto" avec une m�thode public "saveall()"
    2) dans mon projet, j'int�gre la librairie contenant toto
    3) je d�rive une classe "myToto" qui surcharge "saveall()":
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    class myToto : public toto {
    public:
      void saveall() {
         // do my stuff
         toto::saveall();
      }
    }
    Et bien le linker me dit qu'il ne conna�t pas la m�thode toto:saveall()...

    L� aussi, je suis oblig� de sortir ma classe de la librairie, mais ce qui est frustrant c'est que je ne sais psa pourquoi :-(

  4. #4
    Membre �m�rite Avatar de 10_GOTO_10
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    890
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 890
    Par d�faut
    Les erreurs de link sont un probl�me r�current chez Borland. En g�n�ral, on les r�sout en changeant l'ordre des �l�ments dans le gestionnaire de projets (les .lib avant les .cpp, je crois). Par contre, lorsqu'on fait des #pragma link, je ne sait pas dans quel ordre il les met.

  5. #5
    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
    C'est un peu tard pour fermer ce post que j'avais un peu oubli�...

    Donc j'avais supprim� tous mes pragma et en enregistrant le fichier BDS2006 m'a reconstruit une liste qui fonctionnait... J'ai pas tr�s bien compris, mais �a marche!

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

Discussions similaires

  1. R�ponses: 19
    Dernier message: 09/02/2010, 10h26
  2. N�cessit� des #pragma link sous 2007
    Par Invit� dans le forum C++Builder
    R�ponses: 0
    Dernier message: 30/08/2009, 19h51
  3. R�ponses: 7
    Dernier message: 11/11/2005, 12h51
  4. Link .LIB [DLL]
    Par taron dans le forum MFC
    R�ponses: 3
    Dernier message: 09/11/2005, 17h32
  5. Pragma lib o� le mettre ?
    Par Sephi dans le forum MFC
    R�ponses: 2
    Dernier message: 16/02/2004, 23h50

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