Форум русскоязычного сообщества Ubuntu


Хотите сделать посильный вклад в развитие Ubuntu и русскоязычного сообщества?
Помогите нам с документацией!

Автор Тема: Стек с++  (Прочитано 2184 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн mazai_f_kedah

  • Автор темы
  • Активист
  • *
  • Сообщений: 271
  • Ни один заяцЪ не пострадал...
    • Просмотр профиля
Стек с++
« : 17 Мая 2012, 21:01:18 »
В общем, есть класс Stack (начал изучать стеки), в котором реализованы некоторые станд. функции (pop(), push() и т.д.). Проблема в том. что при компиляции выдает непонятные ошибки, подскажите пожалуйста, куда копать...
(Нажмите, чтобы показать/скрыть)

Пользователь решил продолжить мысль 17 Мая 2012, 21:03:03:
ошибки мне не понятны...
(Нажмите, чтобы показать/скрыть)
« Последнее редактирование: 17 Мая 2012, 21:10:56 от mazai_f_kedah »
Acer eMachines 350-21G16ikk: Intel® Atom™ N455 (1.66Ghz) && DDR2 1024 Mb && Intel® NM10 Express && Intel® GMA 3150 + Ubuntu 12.04 (i386) =

Оффлайн SergeyIT

  • Зануда.
  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 5743
  • Все по палатам!
    • Просмотр профиля
Re: Стек с++
« Ответ #1 : 17 Мая 2012, 21:25:36 »
http://forum.altlinux.org/index.php?topic=3674.0
(Гугель то на что?  :idiot2:)
Извините, я все еще учусь

Оффлайн hippi90

  • Активист
  • *
  • Сообщений: 433
    • Просмотр профиля
Re: Стек с++
« Ответ #2 : 17 Мая 2012, 21:33:38 »
Вооружаемся словариком и нормальным учебником по С или С++. "undefined reference" переводится как "неопределенная ссылка", это значит, что компилятору известно о существовании такой функции, а линкер найти её не может. Что вполне логично, учитывая, что функция эта находится в библиотеке, но мы об этом линкеру не сказали. Чтобы при линковке исполняемых файлов поиск функций происходил в сторонних библиотеках, нужно эти библиотеки указать при помощи ключа -l (латинская буква, а не цифра 1): g++ some_file.cpp -llibrary_name. В этом случае линкер будет искать библиотеку liblibrary_name.so в одном из стандартных каталогов (/usr/lib, /usr/local/lib, как правило). Если ваша библиотека находится в нестандартном каталоге, указываем путь с помощью ключа -L: g++ some_file.cpp -llibrary_name -L/path/to/folder.
Поскольку функции, которые не может найти линкер, находятся в libncurses.so, которая находится в стандартном каталоге /usr/lib, то в коммандную строку компилятора необходимо добавить:
g++ -Wall -o "kpz_05" "kpz_05.cpp" -lncurses

Оффлайн mazai_f_kedah

  • Автор темы
  • Активист
  • *
  • Сообщений: 271
  • Ни один заяцЪ не пострадал...
    • Просмотр профиля
Re: Стек с++
« Ответ #3 : 17 Мая 2012, 21:39:10 »
спасибо вам обоим, все понял, как мне указать этот линк в ide, в которой работаю и компилирую (а именно geany) - привык :)

Пользователь решил продолжить мысль 17 Мая 2012, 21:48:09:
огроменное вам спасибо, добрые люди :D, все понял, разобрался!
« Последнее редактирование: 17 Мая 2012, 21:48:09 от mazai_f_kedah »
Acer eMachines 350-21G16ikk: Intel® Atom™ N455 (1.66Ghz) && DDR2 1024 Mb && Intel® NM10 Express && Intel® GMA 3150 + Ubuntu 12.04 (i386) =

 

Страница сгенерирована за 0.019 секунд. Запросов: 22.