Неопределенный символ g ++ Ошибка при использовании общей библиотеки - PullRequest
0 голосов
/ 01 апреля 2012

Символ находится в файле.Я проверил это, используя nm & grep, но я все еще получаю неопределенную ошибку символа при запуске скомпилированного приложения.Другие символы в общей библиотеке работают просто отлично.Заголовочный файл объявляет его как внешний, и он не находится в условном блоке препроцессора.Я новичок в c / c ++, так что любой опыт работы с чем-то подобным был бы оценен.

Существует множество связанных вопросов по StackOverflow, но все перечисляют исходные файлы и заголовки, которые ничего не значат дляфактический контекст вопроса.Это общий вопрос программирования: почему g ++ не может связать символ в моем скомпилированном приложении?Определение заголовка в порядке, символ находится в общей библиотеке, а другие символы работают правильно.

1 Ответ

0 голосов
/ 01 апреля 2012

Вам необходимо установить переменную среды LD_LIBRARY_PATH, чтобы указать путь к вашей версии библиотеки для разработки. Это гарантирует, что компоновщик времени выполнения (ld.so) найдет его при запуске приложения.

С вашими настройками сборки все в порядке, но они не влияют на то, что происходит во время выполнения. Есть способы «запечь» пути в исполняемый файл во время сборки, если вы действительно этого хотите. См. Справочную страницу по ld.so, чтобы узнать, как он ищет библиотеки.

...