Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
983 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  [Résolu][Débutant][cppunit] linkage impossible d'exemples simples

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Résolu][Débutant][cppunit] linkage impossible d'exemples simples

n°715554
TwinSun
Posté le 04-05-2004 à 20:48:10  profilanswer
 

Bonjour,
 
j'ai fait pleins d'essais pour arriver à faire fonctionner la bibliothèque cppunit, et je n'y suis arrivé qu'en mettant toutes les classes dans le même fichier (avec le main aussi).
 
Pourriez-vous regarder mon code et me dire ce qui ne va pas s'il vous plaît ? C'est vraiment du code de base avec rien dedans.
 
Vous pouvez télécharger les sources.
 
Fichier MaClasse.H

Code :
  1. #ifndef _MA_CLASSE_H
  2. #define _MA_CLASSE_H
  3. class MaClasse
  4. {
  5. private:
  6.   int _monChamp;
  7. public:
  8.   MaClasse(int);
  9.   int getValeur();
  10. };
  11. #endif


 
Fichier MaClasse.cpp

Code :
  1. #include "MaClasse.H"
  2. MaClasse::MaClasse(int a)
  3.   : _monChamp(a)
  4. {
  5. }
  6. int MaClasse::getValeur()
  7. {
  8.   return 0;
  9. }


 
Fichier MaClasseTest.H

Code :
  1. #ifndef _MA_CLASSE_TEST
  2. #define _MA_CLASSE_TEST
  3. #include <iostream>
  4. #include <cppunit/TestCase.h>
  5. #include <cppunit/TextTestResult.h>
  6. #include <cppunit/TestSuite.h>
  7. #include "MaClasse.H"
  8. class MaClasseTest : public CppUnit::TestCase
  9. {
  10. public:
  11.   MaClasseTest(std::string name);
  12.   void runTest();
  13. };
  14. #endif


 
Fichier MaClasseTest.cpp

Code :
  1. #include "MaClasseTest.H"
  2. MaClasseTest::MaClasseTest(std::string name)
  3.   : CppUnit::TestCase( name )
  4. {
  5. }
  6. void MaClasseTest::runTest()
  7. {
  8.   MaClasse mc1(10);
  9.   MaClasse mc2(10);
  10.   MaClasse mc3(15);
  11.   CPPUNIT_ASSERT( mc1.getValeur() == mc2.getValeur() );
  12.   CPPUNIT_ASSERT( mc1.getValeur() != mc3.getValeur() );
  13. }


 
Fichier test.cpp

Code :
  1. #include <iostream>
  2. #include <cppunit/TextTestResult.h>
  3. #include <cppunit/TestSuite.h>
  4. #include <cppunit/TestCase.h>
  5. #include "MaClasseTest.H"
  6. int main(void)
  7. {
  8.   std::cout << "titi" << std::endl;
  9.   MaClasseTest t1(std::string ("toto" ));
  10.   t1.runTest();
  11.   std::cout << "coucou" << std::endl;
  12. }


 
Résultat de la compilation

Code :
  1. g++ -lcppunit -o test -W -Wall -g test.cpp MaClasse.cpp MaClasseTest.cpp
  2. /tmp/ccdujrUq.o(.gnu.linkonce.t._ZN12MaClasseTestD1Ev+0x22): dans la fonction  MaClasseTest::~MaClasseTest [in-charge]():
  3. /home/quetzalcoatl/Documents/projects/POO/cppunit/testExamples/test/test.cpp:10: undefined reference to `CppUnit::TestCase::~TestCase [not-in-charge]()'
  4. /tmp/ccOOzJew.o(.text+0x27): dans la fonction  MaClasseTest::MaClasseTest[not-in-charge](std::basic_string<char, std::char_traits<char>, std::allocator<char> > ):
  5. /home/quetzalcoatl/Documents/projects/POO/cppunit/testExamples/test/MaClasseTest.cpp:5: undefined reference to `CppUnit::TestCase::TestCase[not-in-charge](std::basic_string<char, std::char_traits<char>, std::allocator<char> > )'
  6. /tmp/ccOOzJew.o(.text+0x99): dans la fonction  MaClasseTest::MaClasseTest[in-charge](std::basic_string<char, std::char_traits<char>, std::allocator<char> > ):
  7. /home/quetzalcoatl/Documents/projects/POO/cppunit/testExamples/test/MaClasseTest.cpp:5: undefined reference to `CppUnit::TestCase::TestCase[not-in-charge](std::basic_string<char, std::char_traits<char>, std::allocator<char> > )'
  8. /tmp/ccOOzJew.o(.text+0x162): dans la fonction  MaClasseTest::runTest()     :
  9. /home/quetzalcoatl/Documents/projects/POO/cppunit/testExamples/test/MaClasseTest.cpp:14: undefined reference to `CppUnit::SourceLine::SourceLine[in-charge](std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int)'
  10. /tmp/ccOOzJew.o(.text+0x1cb):/home/quetzalcoatl/Documents/projects/POO/cppunit/testExamples/test/MaClasseTest.cpp:14: undefined reference to `CppUnit::Asserter::failIf(bool, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, CppUnit::SourceLine)'
  11. /tmp/ccOOzJew.o(.text+0x221):/home/quetzalcoatl/Documents/projects/POO/cppunit/testExamples/test/MaClasseTest.cpp:14: undefined reference to `CppUnit::SourceLine::~SourceLine [in-charge]()'
  12. /tmp/ccOOzJew.o(.text+0x231):/home/quetzalcoatl/Documents/projects/POO/cppunit/testExamples/test/MaClasseTest.cpp:14: undefined reference to `CppUnit::SourceLine::~SourceLine [in-charge]()'
  13. /tmp/ccOOzJew.o(.text+0x2bf):/home/quetzalcoatl/Documents/projects/POO/cppunit/testExamples/test/MaClasseTest.cpp:15: undefined reference to `CppUnit::SourceLine::SourceLine[in-charge](std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int)'
  14. /tmp/ccOOzJew.o(.text+0x32e):/home/quetzalcoatl/Documents/projects/POO/cppunit/testExamples/test/MaClasseTest.cpp:15: undefined reference to `CppUnit::Asserter::failIf(bool, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, CppUnit::SourceLine)'
  15. /tmp/ccOOzJew.o(.text+0x384):/home/quetzalcoatl/Documents/projects/POO/cppunit/testExamples/test/MaClasseTest.cpp:15: undefined reference to `CppUnit::SourceLine::~SourceLine [in-charge]()'
  16. /tmp/ccOOzJew.o(.text+0x394):/home/quetzalcoatl/Documents/projects/POO/cppunit/testExamples/test/MaClasseTest.cpp:15: undefined reference to `CppUnit::SourceLine::~SourceLine [in-charge]()'
  17. /tmp/ccOOzJew.o(.gnu.linkonce.r._ZTV12MaClasseTest+0x10):/home/quetzalcoatl/Documents/projects/POO/cppunit/testExamples/test/MaClasseTest.cpp:5: undefined reference to `CppUnit::TestCase::run(CppUnit::TestResult*)'
  18. /tmp/ccOOzJew.o(.gnu.linkonce.r._ZTV12MaClasseTest+0x14):/home/quetzalcoatl/Documents/projects/POO/cppunit/testExamples/test/MaClasseTest.cpp:5: undefined reference to `CppUnit::TestCase::countTestCases() const'
  19. /tmp/ccOOzJew.o(.gnu.linkonce.r._ZTV12MaClasseTest+0x18):/home/quetzalcoatl/Documents/projects/POO/cppunit/testExamples/test/MaClasseTest.cpp:5: undefined reference to `CppUnit::TestCase::getName() const'
  20. /tmp/ccOOzJew.o(.gnu.linkonce.r._ZTV12MaClasseTest+0x1c):/home/quetzalcoatl/Documents/projects/POO/cppunit/testExamples/test/MaClasseTest.cpp:5: undefined reference to `CppUnit::TestCase::toString() const'
  21. /tmp/ccOOzJew.o(.gnu.linkonce.r._ZTV12MaClasseTest+0x20):/home/quetzalcoatl/Documents/projects/POO/cppunit/testExamples/test/MaClasseTest.cpp:5: undefined reference to `CppUnit::TestCase::run()'
  22. /tmp/ccOOzJew.o(.gnu.linkonce.t._ZN12MaClasseTestD0Ev+0x22): dans la fonction  MaClasseTest::~MaClasseTest [in-charge deleting]():
  23. /home/quetzalcoatl/Documents/projects/POO/cppunit/testExamples/test/MaClasseTest.cpp:5: undefined reference to `CppUnit::TestCase::~TestCase [not-in-charge]()'
  24. /tmp/ccOOzJew.o(.gnu.linkonce.r._ZTI12MaClasseTest+0x8):/usr/include/c++/3.3/iostream:92: undefined reference to `typeinfo for CppUnit::TestCase'
  25. collect2: ld a retourn 1 code d'tat d'excution


 
Compilateur : g++ (GCC) 3.3.3 (Debian 20040429)
Linkeur : GNU ld version 2.14.90.0.7 20031029 Debian GNU/Linux
cppunit : 1.8.0
 
Merci beaucoup


Message édité par TwinSun le 05-05-2004 à 11:27:23
mood
Publicité
Posté le 04-05-2004 à 20:48:10  profilanswer
 

n°715863
djdie
L'heure, c'est l'heure.
Posté le 05-05-2004 à 10:15:53  profilanswer
 

Mets le -lcppunit à la fin de ta commande

n°715960
TwinSun
Posté le 05-05-2004 à 11:20:47  profilanswer
 

djdie a écrit :

Mets le -lcppunit à la fin de ta commande


 
Quand j'ai aperçu cette réponse, je me suis dit que tu te moquais de moi. Ensuite, j'ai lu la réponse et je me suis dit "mouaihh boaf...". J'ai essayé et... ça MARCHE !!!
 
Merci beaucoup Monsieur  :love:

n°1069798
casper78
Posté le 03-05-2005 à 00:33:40  profilanswer
 


Merci pour ce "post"
 
En effet, cela faisait au moins 2 jours que je luttais sur ce problème.
Par contre, est ce que quelqu'un pourrait me dire pourquoi le fait de placer "-lcppunit"  
à la fin (et non au milieu par exemple) change la compilation en tout cas son résultata
 
Merci d'avançe :jap:

n°1623434
guiguivts
Posté le 14-10-2007 à 12:14:52  profilanswer
 

Salut!  
 
Je me permet de relancer le post parce que je dois avoir sensiblement le même problème. Donc moi tout passe à la compilation et au linkage mais c est à l execution que c est plus difficile :  
 
Le probleme c'est qu'il ne me ressort pas toujours ce qu'il devrait ressortir !  
 
J'ai un code tres simple pour le moment :  
 
une classe main :  
 

Code :
  1. #include <cppunit/ui/text/TestRunner.h>
  2. #include "TermTest.cpp"
  3. using namespace sys;
  4. int main(void)
  5. {
  6.   CppUnit::TextUi::TestRunner runner;
  7.   runner.addTest(TermTest::suite());
  8.   runner.run();
  9.   return 0;
  10. }


 
et une classe de test :  
 

Code :
  1. /*
  2. * Classe testfichier
  3. *  
  4. */
  5. #ifndef TESTFICHIER
  6. #define TESTFICHIER
  7. #include <cppunit/TestFixture.h>
  8. #include <cppunit/extensions/HelperMacros.h>
  9. #include "fichier.h"
  10. namespace sys{
  11. class TermTest : public CppUnit::TestFixture {
  12.    CPPUNIT_TEST_SUITE(TermTest);
  13.    CPPUNIT_TEST(creation);
  14.    CPPUNIT_TEST(testnom);
  15.    CPPUNIT_TEST_SUITE_END();
  16.    fichier *f;
  17. public:
  18.    TermTest() {}
  19.    void creation() {CPPUNIT_ASSERT_EQUAL( 12, 12 );}
  20.    void testnom(){
  21.      CPPUNIT_ASSERT_EQUAL( 12, 13 );
  22.   }
  23. };
  24. }
  25. #endif


 
Je compile avec un makefile qui fait :
 
all : exo3
 
exo3 : main.o TermTest.o
 g++ -o exo3 *.o -lcppunit -ldl
 
main.o : main.cpp
 g++ -c main.cpp
 
TermTest.o : TermTest.cpp
 g++ -c TermTest.cpp
 
clean :
 rm -rf *.
 
Et le résultat varie selon la compilation.. Je peux compiler une fois, il me dit bien qu il y a une erreur sur le test 12==13 puis recompiler, relancer et là il me dit que les deux tests sont ok  :??:  
 
Une idée ??  
 
merci


---------------
http://plainedemazerolles.free.fr
n°1623436
guiguivts
Posté le 14-10-2007 à 12:17:08  profilanswer
 

Je pense que c'est un probleme du à la compilation car je viens de me rendre compte qu'il ne prennait pas toujours les modifications que je faisais dans mes fichiers..  :heink:


---------------
http://plainedemazerolles.free.fr

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  [Résolu][Débutant][cppunit] linkage impossible d'exemples simples

 

Sujets relatifs
[RESOLU] Se connecter à une bdd sur sql server avec un dsn [VB]alterner couleurs dans un tableau - RESOLU
[Resolu][VBA]recuperer les titres et n° de chapitre d'un document word[Debutant]Probleme pour debugger en JAVA
[Résolu] [MySQL] select sur chaines de caractères[Résolu][Java] ActionListener, actionPerformed
[SWT] class Image [résolu] (venez lancer des cailloux)C# - Thread à IHM [Résolu]
[RESOLU] Auto scroll dans un JTextArea[resolu][Java] Reproduir un assistant de saisi semi-automatique
Plus de sujets relatifs à : [Résolu][Débutant][cppunit] linkage impossible d'exemples simples


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR