Retourner aux forums || Retourner au forum Programmation.c++

Programmation.c++ : Compilation avec des librairies objet

Posté par bash () le 21 octobre 2006
0
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.

> Lire le message (4 commentaires, moyenne: 1).  

Cette discussion est archivée, il n'est plus possible de laisser des commentaires.

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

#include <obj1.h>

Posté par Florent C. (page perso, ) le 21/10/2006 à 13:47. (lien). É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.

--
flure
  • [^]Re: #include <obj1.h>

    Posté par bash () le 21/10/2006 à 13:54. (lien). É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 Florent C. (page perso, ) le 21/10/2006 à 14:01. (lien). É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.

      --
      flure
  • [^]Re: #include <obj1.h>

    Posté par bash () le 21/10/2006 à 13:58. (lien). Évalué à 0.

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

Revenir en haut de page || Retourner aux forums || Retourner au forum Programmation.c++