Score:2

ปัญหาในการสร้างโปรเจ็กต์ c++ ด้วย G++

ธง aq

ฉันพยายามที่จะสร้าง น้ำตก ไลบรารีที่ใช้ G++ 8.3.0 ในเอกสารระบุว่าได้รับการทดสอบบน G++ 4.7.2 คำถามของฉันคือจำเป็นต้องดาวน์เกรดเป็น 4.7.2 หรือไม่ ถ้าเป็นเช่นนั้นคุณช่วยบอกฉันได้อย่างไร เพราะฉันลองทั้ง 4.8 (เวอร์ชันเก่าที่สุดตามคำสั่ง $ which gcc) และ 8.3.0 เพื่อสร้าง cascade และได้รับข้อผิดพลาดต่อไปนี้:

ในไฟล์รวมจาก ../../include/descore/descore.hpp:104,
                 จาก ../../include/descore/stdafx.h:38,
                 จาก Wildcard.cpp:44:
../../include/descore/stltree.hpp:74:34: ข้อผิดพลาด: นิยามใหม่ของ âstruct std::less<_Tp*>â
     เทมเพลต <typename T> โครงสร้างน้อยกว่า <T *>
                                  ^~~~~~~~~~
ในไฟล์รวมจาก /usr/include/c++/8/bits/stl_tree.h:65,
                 จาก /usr/include/c++/8/set:60,
                 จาก ../../include/descore/descore.hpp:88,
                 จาก ../../include/descore/stdafx.h:38,
                 จาก Wildcard.cpp:44:
/usr/include/c++/8/bits/stl_function.h:424:12: หมายเหตุ: คำจำกัดความก่อนหน้าของ âstruct std::less<_Tp*>â
     โครงสร้างน้อย<_Tp*> : binary_function สาธารณะ<_Tp*, _Tp*, bool>
            ^~~~~~~~~~
ทำ: *** [Makefile:17: ../../objs/descore/Wildcard.o] ข้อผิดพลาด 1

หรือฉันควรทำการเปลี่ยนแปลงไฟล์ .hpp? (เป้าหมายสุดท้ายของฉันคือการใช้น้ำตกกับ G++-11 บน Ubuntu 19.10)

ขอบคุณล่วงหน้า.

cc flag
คุณต้องใช้คอมไพเลอร์ c++ ซึ่งจะเป็น g++ บน Ubuntu ไม่ใช่ gcc
student_11 avatar
aq flag
ฉันได้แก้ไขโพสต์ของฉัน ขอบใจ. คุณได้รับข้อผิดพลาดเดียวกันเมื่อใช้คำสั่ง 'make' หรือไม่
hr flag
สำหรับฉัน การใช้ `g++-4.8` (บน Ubuntu 18.04) เอาชนะปัญหาการกำหนดเทมเพลตใหม่ (ซึ่งฉันคิดว่าเป็นเพราะโค้ดกลิ้งโค้ดความเชี่ยวชาญเฉพาะบางส่วนสำหรับประเภทตัวชี้); อย่างไรก็ตาม มีข้อผิดพลาดเพิ่มเติมที่เฟสของลิงก์
hr flag
... ตกลง ฉันเลยทำให้มันสร้างด้วย g++-4.8 ผ่าน cmake โดยเพิ่ม `descore` ไปที่ `target_link_libraries` แล้วใช้ `cmake -DCMAKE_CXX_COMPILER=g++-4.8 -DCMAKE_CXX_FLAGS=-pthread` แต่ฉันไม่รู้วิธีทำให้มันใช้งานได้กับ g ++ ในภายหลัง
student_11 avatar
aq flag
ขอบคุณ @steeldriver ฉันเคยสร้างโดยใช้ Microsoft VS2015 มาก่อน มันใช้งานไม่ได้ในตอนแรก แต่หลังจากที่ฉันเปลี่ยนคำจำกัดความของแมโคร MSC_VERSION ใน Defines.hpp (เช่น #ถ้า _MSC_VER
hr flag
@student_11 มี *อาจ* เป็นวิธีการทำเช่นนั้นกับ g++ แต่ฉันไม่เห็นอะไรที่ชัดเจน (เช่น สวิตช์คอมไพเลอร์หรือ `#ifdef` ในไฟล์ `stl_function.h` ที่อนุญาตให้เปิดฟังก์ชันการทำงาน ปิด). คุณอาจต้องลบรหัสความเชี่ยวชาญเฉพาะส่วนที่ขัดแย้งออกจากโครงการ ขอให้โชคดี.
cc flag
บรรทัดที่ 80-90 ของ stltree.hpp ให้ตัวเลือกสำหรับการแก้ไข
student_11 avatar
aq flag
@ubfun1 ขอบคุณค่ะ เราควรแสดงความคิดเห็นเนมสเปซเหนือบรรทัดเหล่านั้นเพื่อกำจัดข้อผิดพลาด

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา