Цитата(alux @ Mar 13 2008, 17:04)

А в DLIB как?
Думаю, что также. Вы только не обратили внимания на свою же фразу:
Цитата
проект на Си перенес в новый проект на С++.
C++ использует изменение (mangling) имен С++ - функций для обеспечения... черт, из головы вылетело как это называется, в общем чтобы иметь несколько функций с одинаковым именем и разными наборами/типами параметров. Поэтому, когда вы перенесли свой putchar в С++, его имя в объектном файле изменилось. Поэтому линкер ее не нашел и прицепил функцию putchar из библиотеки, которая, в свою очередь, вызывает __write. Вам нужно явно объявить эту функцию как функцию с С-связыванием:
Код
extern "C" int putchar(int data)
{
while(!(UCSR0A&(1<<UDRE0))); // wait until byte sendt
UDR0=data;
return(data);
}
Цитата
На телесиськах посоветовали
О! Сейчас там такой контингент... Спецы из-за известных личностей ушли... Так что там сейчас могут и не такого насоветовать.