Puncte:2

problemă cu realizarea unui proiect c++ cu G++

drapel aq

Încerc să construiesc cascadă bibliotecă folosind G++ 8.3.0. În documentație se menționează că a fost testat pe G++ 4.7.2. Întrebarea mea este, este necesar să faceți downgrade la 4.7.2? daca da ai putea te rog sa-mi spui cum? pentru că am încercat atât 4.8 (cea mai veche versiune disponibilă conform comenzii $which gcc) cât și 8.3.0 pentru a construi cascada și am primit următoarea eroare:

În fișierul inclus din ../../include/descore/descore.hpp:104,
                 de la ../../include/descore/stdafx.h:38,
                 din Wildcard.cpp:44:
../../include/descore/stltree.hpp:74:34: eroare: redefinirea âstruct std::less<_Tp*>â
     șablon <tipnume T> struct less <T *>
                                  ^~~~~~~~~~
În fișierul inclus din /usr/include/c++/8/bits/stl_tree.h:65,
                 din /usr/include/c++/8/set:60,
                 de la ../../include/descore/descore.hpp:88,
                 de la ../../include/descore/stdafx.h:38,
                 din Wildcard.cpp:44:
/usr/include/c++/8/bits/stl_function.h:424:12: notă: definiția anterioară a âstruct std::less<_Tp*>â
     struct less<_Tp*>: public binary_function<_Tp*, _Tp*, bool>
            ^~~~~~~~~~
make: *** [Makefile:17: ../../objs/descore/Wildcard.o] Eroare 1

Sau ar trebui să fac modificări la fișierele .hpp? (Scopul meu final este să folosesc cascada cu G++-11. pe ubuntu 19.10)

Mulțumesc anticipat.

drapel cc
Trebuie să utilizați un compilator c++, care ar fi g++ pe Ubuntu, nu gcc.
student_11 avatar
drapel aq
Mi-am editat postarea. Mulțumiri. Primiți aceeași eroare când utilizați comanda „make”?
drapel hr
Pentru mine, utilizarea `g++-4.8` (pe Ubuntu 18.04) depășește problema redefinirii șablonului (care cred că se datorează codului care rulează propriul cod de specializare parțial pentru tipurile de pointer); cu toate acestea, există erori suplimentare în faza de legătură
drapel hr
... OK, așa că am făcut-o să se construiască cu g++-4.8 prin cmake, adăugând `descore` la `target_link_libraries` și apoi folosind `cmake -DCMAKE_CXX_COMPILER=g++-4.8 -DCMAKE_CXX_FLAGS=-pthread`. Dar nu știu cum să o fac să funcționeze cu g++ ulterioară.
student_11 avatar
drapel aq
Mulțumesc @steeldriver. L-am construit folosind Microsoft VS2015 înainte. Nu a funcționat la început, dar după ce am schimbat definițiile macrocomenzilor MSC_VERSION în defines.hpp (de ex. #dacă _MSC_VER
drapel hr
@student_11 *ar putea* să existe o modalitate de a face asta cu g++, totuși nu pot vedea nimic evident (cum ar fi un comutator al compilatorului sau un `#ifdef` în fișierul `stl_function.h` care ar permite ca funcționalitatea să fie transformată oprit). Poate fi necesar să eliminați codul de specializare parțial aflat în conflict din proiect. Noroc.
drapel cc
Liniile 80-90 ale stltree.hpp vă oferă opțiunile de modificare.
student_11 avatar
drapel aq
@ubfun1 mulțumesc. ar trebui să comentăm spațiul de nume de deasupra acestor linii pentru a scăpa de eroare.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.