Forum Programmation.c++ Compilation avec des librairies objet

Posté par  .
Étiquettes : aucune
0
21
oct.
2006
Bonjour à tous,

J'ai un petit probleme de compilation ou voir meme de code.
Je m'explique :
Je dois ecrire un petit programme qui utilise des objets de 2 librairies obj1.o et obj2.o deja compillées.

Dans un premier temps au niveau code j'utilise directement mon objet sans avoir rien déclaré :

obj1 o (param1,pram2,...);

J'essay de compiler dans un deuxieme temps :

g++ test.cc

Ce qui me renvoi :

`obj1' undeclared (first use this function)

Jusqu'à la normal, puis :

g++ -l ../lib/obj1.o test.cc

Toujours la meme erreur, puis :

g++ -L ../lib/ test.cc

Toujours pareil.

Donc quelqu'un peut-il m'eclairer sur mon erreur ou oubli, en me donnant un petit exemple.

Merci d'avance.

Bash.
  • # #include <obj1.h>

    Posté par  . Évalué à 1.

    Avant de pouvoir utiliser les objets contenus dans obj1.o, il faut les déclarer, ce qui est fait généralement en faisant un #include du header de leur déclaration.

    Tu as l'erreur lors de la compilation, et non lors de l'édition des liens, ce que tu semblais croire.
    • [^] # Re: #include <obj1.h>

      Posté par  . Évalué à 1.

      En faite mon probleme c'est que j'ai que les librairies obj1.o et obj2.o à ma disposition. J'ai pas les headers.
      • [^] # Re: #include <obj1.h>

        Posté par  . Évalué à 2.

        Dans ce cas, tu peux toujours utiliser la forward declaration et ne passer que par des pointeurs. Par exemple, au lieu de faire :
        obj1 o(param1, param2);
        
        tu fais :
        class obj1; // forward declaration
        obj1* o = new obj1(param1, param2);
        // ... autres instructions
        delete o; // pas oublier de libérer le pointeur à la fin
        
        Par contre, il faut que tu connaisses bien toutes les méthodes de tes objets, sinon tu risques d'avoir des problèmes. Je crois que c'est à l'édition des liens que tu auras des erreurs. En tout cas il vaut mieux que ce soit comme ça, sinon ce serait des plantages à l'exécution, ce qui est pire.
    • [^] # Re: #include <obj1.h>

      Posté par  . Évalué à 0.

      En faite mon probleme c'est que j'ai que les .o des objets. Et pas les headers.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.