Символ находится в файле. Я проверил это с помощью nm & grep, но все еще получаю ошибку неопределенного символа при запуске скомпилированного приложения. Другие символы в общей библиотеке работают нормально. Файл заголовка объявляет его как внешний и не находится в условном блоке препроцессора. Я новичок в c/c++, поэтому любой опыт с чем-то подобным будет оценен.
В StackOverflow есть масса связанных вопросов, но все перечисляют исходные файлы и заголовки, которые ничего не значат для фактического контекста вопроса. Это общий вопрос программирования: почему g++ не может связать символ с моим скомпилированным приложением? Определение заголовка прошло проверку, символ находится в общей библиотеке, а другие символы работают правильно.
nmк вашему вопросу. - person Oliver Charlesworth   schedule 01.04.2012ldd, чтобы узнать, с какой разделяемой библиотекой на самом деле пытается связать приложение при запуске. Это то место, которое вы ожидаете? - person Troubadour   schedule 01.04.2012g++ -L/usr/local/lib -o "smash" ./src/smash.o ./src/smash_init.o -lnspr4 -lmozjs185Почему он все еще загружает библиотеку в /usr/lib? - person   schedule 01.04.2012nm -C, что библиотека содержит искаженный символ C++? - person Basile Starynkevitch   schedule 01.04.2012nm -D, когда дело доходит до компоновки программ. - person jørgensen   schedule 01.04.2012