C ++ - ปัญหาการอ้างอิงที่ไม่ได้กำหนดไปยัง PCM :: getInstance ()

ก่อนที่ฉันจะถามคำถามใหม่ ฉันได้อ่านคำถามนี้มาบ้างแล้ว แต่ฉันก็ยังสับสนอยู่

ฉันรวบรวมโปรแกรมของฉันด้วย:

g++ -std=c++11 -ผนัง -O3 -fopenmp main.cpp -o main -D WITH_COUNTER -I /usr/local/src/pcm -L /usr/local/src/pcm -L /usr/local/ lib

จากนั้นฉันพบข้อผิดพลาด:

main.cpp:(.text.startup+0x27e): ไม่ได้กำหนดการอ้างอิงถึง PCM::getInstance()

main.cpp:(.text.startup+0x289): ไม่ได้กำหนดการอ้างอิงถึง PCM::resetPMU()

main.cpp:(.text.startup+0x310): ไม่ได้กำหนดการอ้างอิงถึง PCM::program(PCM::ProgramMode, void const*)

ดังนั้นใครสามารถอธิบายวิธีแก้ปัญหานี้ให้ฉันฟังได้บ้าง


person Dwi Khairil Oktahidayat    schedule 19.09.2018    source แหล่งที่มา


คำตอบ (1)


คุณไม่ได้เชื่อมโยงกับห้องสมุดจริงๆ

ตัวเลือก -L บอกให้ตัวเชื่อมโยงเพิ่มไดเร็กทอรีลงในเส้นทางการค้นหา แต่ตัวเชื่อมโยงจะไม่ผ่านไลบรารีทั้งหมดในเส้นทางเพื่อค้นหาว่าไลบรารีใดที่อาจถูกต้อง (อาจมีหลายร้อยหรือหลายพันก็ได้)

แต่คุณต้องระบุไลบรารีที่จะเชื่อมโยงอย่างชัดเจนโดยใช้ตัวเลือก -l (L ตัวพิมพ์เล็ก)

สำหรับตัวอย่างไลบรารี foo จะมีไฟล์ชื่อ libfoo.a หรือ libfoo.so หากต้องการเชื่อมโยงกับมัน คุณต้องใช้ -lfoo

หากเอกสารประกอบสำหรับไลบรารีของคุณไม่ได้บอกคุณว่าคุณควรลิงก์กับไลบรารีใด ให้มองหาไฟล์ที่มีชื่อที่เหมาะสม (ตามที่กล่าวไว้ข้างต้น) และใช้ตัวเลือกที่ถูกต้องเพื่อเชื่อมโยงกับไลบรารี

person Some programmer dude    schedule 19.09.2018