จะทำให้ toolchain Linux GCC ของ Eclipse CDT แก้ปัญหาส่วนหัวของไลบรารีมาตรฐาน C ++ ได้อย่างไร


12

ใน Ubuntu 12.04 LTS ฉันติดตั้งปลั๊กอิน Eclipse CDT และเปิดโครงการ Hello World ใหม่เพื่อทดสอบทุกอย่าง เมื่อฉันสร้างโครงการฉันเลือกเครื่องมือเดียวเท่านั้น: "Linux GCC"

อย่างไรก็ตามเมื่อมีการสร้างโครงการขึ้นมามันก็บอกว่า

#include<iostream>
#include<cstdlb>

ไม่ได้รับการแก้ไข ดังนั้นจึงไม่สามารถใช้บรรทัดที่มีcoutและendlไม่สามารถค้นหาstdได้

using namespace std; ยังก่อให้เกิดปัญหา

ฉันจะได้รับคำ#includeสั่งของฉันสำหรับส่วนหัวของไลบรารีมาตรฐานที่เป็นที่รู้จักเพื่อสนับสนุนโค้ดโดยใช้stdเนมสเปซได้อย่างไร


ข้อผิดพลาดเหล่านี้ยังคงอยู่แม้หลังจากที่คุณทำProject> Build All?
Eliah Kagan

2
อาจนี่เป็นคำถามงี่เง่า แต่คุณสร้างโครงการใหม่โดยเฉพาะเป็นโครงการ C ++ แทนที่จะเป็นโครงการ C หรือไม่?
bazz

คำตอบ:


4

หากคุณมีปัญหาเดียวกันกับที่ฉันทำฉันสงสัยว่าโครงการของคุณสร้าง แต่การทำโค้ดให้สมบูรณ์ / การไฮไลต์รหัสล้มเหลว? ฉันเพิ่งพบบันทึกย่อบางอย่างที่อาจมีประโยชน์ นี่คือสิ่งที่ฉันทำ:

  • โครงงาน> คุณสมบัติ

  • C / C ++ ทั่วไป

  • เส้นทางและสัญลักษณ์

  • เลือกภาษาที่เหมาะสม

  • คลิก "เพิ่ม" และเพิ่มไดเรกทอรีเฉพาะรุ่นคอมไพเลอร์

สำหรับภาษา 'GNU C ++' ฉันได้เพิ่ม:

  /usr/include
  /usr/include/c++/4.6
  /usr/include/c++/4.6/bits
  /usr/include/i386-linux-gnu
  /usr/include/i386-linux-gnu/bits
  /usr/include/c++/4.6/debug
  /usr/include/c++/4.6/i686-linux-gnu
  /usr/include/c++/4.6/i686-linux-gnu/bits

สำหรับ "GNU C" ฉันเพิ่ม:

  /usr/include
  /usr/include/i386-linux-gnu
  /usr/include/i386-linux-gnu/bits

TBH ฉันไม่คิดว่าไดเรกทอรีทั้งหมดข้างต้นเป็นสิ่งจำเป็นจริง ๆ (คุณอาจลบไดเรกทอรี 'bits') แต่รายการด้านบนใช้งานได้สำหรับฉันในเวลานั้น

ตอนนี้ฉันกำลังใช้ Eclipse Indigo (รุ่น 3.7.2) จาก eclipse.org และจะค้นหาและเพิ่มไดเรกทอรีที่ถูกต้องโดยอัตโนมัติ รายการแตกต่างกันสำหรับฉัน:

/usr/include/c++/4.6
/usr/include/c++/4.6/i686-linux-gnu
/usr/include/c++/4.6/backward
/usr/lib/gcc/i686-linux-gnu/4.6/include
/usr/local/include
/usr/lib/gcc/i686-linux-gnu/4.6/include-fixed
/usr/include/i386-linux-gnu
/usr/include

ชัดเจนเพียงเพิ่มไดเรกทอรีรวมที่มีอยู่จริงในระบบของคุณ ;-)


ทีนี้มันใช้ไม่ได้กับฉัน - แม้ว่าฉันจะใช้ Debian Stretch 64-bit ก็ตาม แต่ฉันได้ปรับคำแนะนำของคุณให้เข้ากับแพลตฟอร์มของฉัน
einpoklum
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.