LINUX.ORG.RU

помогите скомпилять...


0

0

Не удаётся скомпилировать umbrello uml 1.1.1 (Slackware 9.0, gcc-3.2.2).

/usr/include/c++/3.2.2/backward/iostream.h:36: using declaration `istream'

introduced ambiguous type `istream'

cannot convert `std::istream*' to `istream*' in assignment

Поиск показал, что подобные траблы с этим компилятором есть для многих прог, однако как их решать, непонятно. Есть билды, полученные другими, более древними компиляторами, но, AFAK, работать на моей системе они не будут из-за бинарной несовместимости библиотек. Есть ли выход?

anonymous

В общем, я и сам толком не знаю, что это такое, но ищи про namespace и читай, читай, читай... Эт нововведение в Цэ такое.

С уважением -- Смоляное Чучелко

anonymous
()

собственно это значит надо использовать #include<iostream> а не #include<iostream.h>

в качестве решения можно покопать info gcc на тему ключиков для обратной совместимости. опять-же пожно попытаться вернуть старое поведения путем правки системного iostream.h :)

HTH

anonymous
()

собирай umbrello2

anonymous
()

А он стабильный уже? Работает? Релиза вродебы ещё небыло.

anonymous
()

найди какой-нибудь хидер, который всюду вставляется и пропиши в нем

using namespace std;

либо действительно меняй <iostream> на <iostream.h>

dmshadow
()

Всем спасибо, но... про namespaceы я знаю. Не помогает. Тут всё не так просто. Проблема в том, что некоторый файл tokenizer.cc создаётся при помощи flex, а по мнению некоторых flex генерит код неполностью совместимый с gcc 3.х. Например, на flex из поставки slackware 9.0 namespace не влияет. Другие же flexы генерят другой error message. Например flex 2.5.27:`yywrap' undeclared (first use this function). Кому-нибудь удалось скомпилировать это под slackware 9.0?

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.