pioner Опубликовано 29 августа, 2006 Жалоба Опубликовано 29 августа, 2006 Пишу программу с родовыми функциями/классами. Вначале я в файл с функцией 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 Цитата
pioner Опубликовано 27 февраля, 2007 Автор Жалоба Опубликовано 27 февраля, 2007 Я разобрался. Если используешь родовую (template) функцию, то нужно её не прилинковывать, а включать её исходный текст (#include). Цитата
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.