ld.exe: ข้อผิดพลาด DWARF: ไม่พบข้อกำหนดตัวแปรที่ออฟเซ็ต 101cee
ฉันได้รับผลลัพธ์จำนวนมากพร้อมข้อความต่อไปนี้ (แตกต่างจากที่อยู่เลขฐานสิบหกเท่านั้น):
ld.exe: DWARF error: could not find variable specification at offset 101cee
ความหมายของข้อผิดพลาดนี้โดยทั่วไปคืออะไร?
สิ่งนี้จะไม่เกิดขึ้นเมื่อคอมไพล์รุ่นสร้าง สร้างดีบักเท่านั้น
คำตอบ
โดยทั่วไปฉันเพิ่งพบวิธีแก้ปัญหา ฉันวางไว้ที่นี่เพราะฉันไม่พบคำถามดังกล่าวใน StackOverflow โปรดตอบหากตำแหน่งของฉันผิดพลาด
ฉันรวบรวมไลบรารีเป็นไลบรารีแบบคงที่ แต่ไม่มี#define
คำสั่งที่ถูกต้องฟังก์ชันที่ส่งออกทั้งหมดจะได้รับ__declspec(dllexport)
คำนำหน้า ดังนั้นชื่อของฟังก์ชั่นกลายเป็นfunction
__imp_function
ดังนั้นมันจึงเป็นเพียงundefined reference to __imp_function
ไฟล์.
แต่ทำไมถึงเข้ารหัสได้ขนาดนั้น? และเหตุใด release build จึงคอมไพล์ได้อย่างถูกต้อง?
ฉันเชื่อว่าสิ่งนี้เกิดขึ้นเนื่องจาก-flto
ตัวเลือกที่เพิ่มประสิทธิภาพเวลาลิงก์และเก็บรหัสทั้งหมดของไลบรารีไว้ในไฟล์. a ดังนั้นไม่จำเป็นต้องมีการอ้างอิง (ไม่ล้มเหลว)