4

我想报告我在 Mac OS X El Capitan 版本 10.11.2 中安装 OpenFOAM 3.0.1 时遇到的错误的解决方案错误是:

“错误:成员引用类型'std::istream *'(又名'basic_istream *')是一个指针;也许你打算使用'->'?yyin.rdbuf(std::cin.rdbuf());”

这个问题与flex version 2.6.0. 我使用 macports 安装的。

flex 2.5.35 Apple(flex-31)我可以通过使用位于/usr/bin/flex(而不是)的“”来克服这个问题/opt/local/flex

只需在 openfoam 源代码分发的 $(WM_DIR)/rules/General/flex++ 文件中将“flex”更改为“/usr/bin/flex”。

4

2 回答 2

3

我认为这可能是一个迟到的答案,但我相信问题是不同步的“FlexLexer.h”。Flex 2.6.0 更改了用于 C++ 扫描器的 yyin 存储的存储定义,用于标头和生成的源。但是我认为 mac 端口包包含一个过时的 FlexLexer.h,即使 flex 本身已经更新。这会导致您看到的不匹配为编译错误。

而不是降级您的 flex 安装,您也许可以只使用更新的“FlexLexer.h”(例如来自这里的那个:https ://github.com/westes/flex/blob/master/src/FlexLexer.h )

于 2017-02-03T23:15:24.840 回答
1

我刚刚从源代码编译 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/flexin提供的解决方案$HOME/OpenFOAM/OpenFOAM-6/wmake/rules/General/flex++为我解决了。

于 2018-09-13T12:06:10.557 回答