Перейти к содержанию

g++ не видит родовые функции


Рекомендуемые сообщения

Пишу программу с родовыми функциями/классами. Вначале я в файл с функцией main (файл conv.cpp) включал (include) .cpp файл, в котором объявлены и описаны родовые классы/функции - всё прекрасно работало. Затем я решил сделать всё это цивильно, и стал сначала компилировать объектники, и прилинковывать их к main только потом (т. е. включал только заголовки, где функции объявлены, но не описаны). Тогда выдаётся ошибки:

$g++ conv.cpp wfff.o wffa.o

/tmp/ccbhiHFE.o(.text+0x146): In function `main':

conv.cpp: undefined reference to `detctype(short)'

/tmp/ccbhiHFE.o(.text+0x1f2):conv.cpp: undefined reference to

...

/tmp/ccbhiHFE.o(.text+0x38a):conv.cpp: undefined reference to `Image<double>::~Image()'

collect2: ld returned 1 exit status

(вместо точек ещё штук 5 undefined reference)

Причём сначала функция detctype была не родовой. Он её находил. Я сделал её родовой - и он перестал её находить (эти ошибки - после этого преобразования).

ОС Fedora Core 4, компилятор gcc 4.0.0

Ссылка на комментарий
Поделиться на другие сайты

  • 5 месяцев спустя...

Я разобрался. Если используешь родовую (template) функцию, то нужно её не прилинковывать, а включать её исходный текст (#include).

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...