C++ - Проблема Неопределенная ссылка на PCM::getInstance()

Прежде чем я задам новый вопрос, я прочитал несколько или больше вопросов об этом, но я продолжаю путаться.

Я компилирую свою программу с помощью:

g++ -std=c++11 -Wall -O3 -fopenmp main.cpp -o main -D WITH_COUNTER -I /usr/local/src/pcm -L /usr/local/src/pcm -L /usr/local/ библиотека

Затем я нашел ошибку:

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