Я хочу сообщить об устранении ошибки, которую я
получил при установке OpenFOAM 3.0.1 в Mac OS X El Capitan Версия 10.11.2
Ошибка была:
«ошибка: тип ссылки на член ‘std :: istream *’ (он же
‘basic_istream *’) — указатель; может быть, вы хотели использовать ‘->’?
yyin.rdbuf (станд :: cin.rdbuf ());»
Эта проблема связана с flex version 2.6.0
, который я установил, используя macports.
Я мог бы преодолеть проблему с помощью «flex 2.5.35 Apple(flex-31)
«который находится в /usr/bin/flex
(вместо /opt/local/flex
).
Просто измените «flex» на «/ usr / bin / flex» в файле
$ (WM_DIR) / правила / Общие / прогибается ++
вашего исходного кода openfoam.
Я думаю, что это может быть немного поздним ответом, но я считаю, что проблема связана с несинхронизацией «FlexLexer.h». Flex 2.6.0 изменил определение хранилища yyin для сканеров C ++ как для заголовка, так и для сгенерированного источника. Однако я полагаю, что пакет портов Mac включает в себя устаревший FlexLexer.h, хотя сам Flex был обновлен. Это приводит к несоответствию, которое вы видите как ошибки компиляции.
Вместо понижения вашей гибкой установки вы можете просто использовать более новый «FlexLexer.h» (например, следующий: https://github.com/westes/flex/blob/master/src/FlexLexer.h)
Я только что скомпилировал OpenFOAM v6 из исходного кода и получил ту же ошибку — так что эта проблема все еще актуальна. Ошибка возникла в wmake surfmesh
где первая ошибка была как то так
flex -+ ..........
.../OpenFOAM/OpenFOAM- 6/platforms/linux64GccDPInt32Opt/src/surfMesh/surfaceFormats/stl/STLsurfaceFormatASCII.L.C: In member function ‘int STLASCIILexer::lex()’:
.../OpenFOAM/OpenFOAM-6/platforms/linux64GccDPInt32Opt/src/surfMesh/surfaceFormats/stl/STLsurfaceFormatASCII.L.C:5494:9: error: request for member ‘rdbuf’ in ‘((STLASCIILexer*)this)->STLASCIILexer::<anonymous>.yyFlexLexer::yyin’, which is of pointer type ‘std::istream* {aka std::basic_istream<char>*}’ (maybe you meant to use ‘->’ ?)
yyin.rdbuf(std::cin.rdbuf());
Решение, предоставляемое путем изменения flex
в /usr/bin/flex
в $HOME/OpenFOAM/OpenFOAM-6/wmake/rules/General/flex++
сработало для меня.
Спасибо. С уважением, Миккель.