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). Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.