C++ - Masalah Referensi Tidak Terdefinisi ke PCM::getInstance()

Sebelum saya mengajukan pertanyaan baru, saya telah membaca beberapa atau lebih pertanyaan tentang ini, tapi saya tetap bingung.

Saya mengkompilasi program saya dengan:

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

Kemudian, saya menemukan kesalahan:

main.cpp:(.text.startup+0x27e): referensi tidak terdefinisi ke PCM::getInstance()

main.cpp:(.text.startup+0x289): referensi tidak terdefinisi ke PCM::resetPMU()

main.cpp:(.text.startup+0x310): referensi tidak terdefinisi ke PCM::program(PCM::ProgramMode, void const*)

Jadi, adakah yang bisa menjelaskan kepada saya cara mengatasi ini?


person Dwi Khairil Oktahidayat    schedule 19.09.2018    source sumber


Jawaban (1)


Anda sebenarnya tidak terhubung dengan perpustakaan itu sendiri.

Opsi -L memberitahu linker untuk menambahkan direktori ke jalur pencariannya, namun linker tidak akan menelusuri semua perpustakaan di jalurnya untuk menemukan mana yang mungkin benar (mungkin ada ratusan atau bahkan ribuan).

Sebagai gantinya, Anda perlu secara eksplisit menentukan perpustakaan yang akan ditautkan menggunakan opsi -l (huruf kecil L).

Untuk beberapa contoh perpustakaan foo, akan ada file bernama libfoo.a atau libfoo.so. Untuk menghubungkannya Anda menggunakan -lfoo.

Jika dokumentasi perpustakaan Anda tidak memberi tahu Anda perpustakaan mana yang harus Anda tautkan, carilah file dengan nama yang sesuai (seperti disebutkan di atas) dan gunakan opsi yang benar untuk menautkan dengan perpustakaan.

person Some programmer dude    schedule 19.09.2018