【问题标题】:Compliation Error of a C++ second life libraryC++第二生命库的编译错误
【发布时间】:2010-11-24 14:08:31
【问题描述】:

我正在尝试编译第二人生库的一小部分。具体来说,它是 llcommon 部分。我用 VS9 在 Windows 系统中编译它。我失败了,编译器说它无法将'_Ios_Openmode'识别为'std'的成员

对应的代码如下:

explicit llifstream(const std::string& _Filename, std::_Ios_Openmode _Mode = in)
    : std::ifstream(_Filename.c_str(), _Mode)
{       
}

谁能帮我找出问题所在,我应该更改我的编译器配置还是其他什么?

【问题讨论】:

    标签: c++ linden-scripting-language


    【解决方案1】:

    我认为应该是std::ios::openmode

    【讨论】:

    • 真的吗?但代码是由 Linden Lab 编写的。我认为它有效。修改原代码好不好?
    • 也许它意味着标准 c++ 库的不同实现。 Linden Lab 写的代码也不免奇怪;-) 我不知道修改代码是否是个好主意,但是如果你想让它工作并且没有其他方法,那为什么不呢? ;-) 也许您可以通过输入namespace std { typedef ios::openmode _Ios_Openmode; } 来解决它;-) 怀疑它是否更好。无论如何,您需要先确认它解决了问题。
    • 是的,虽然 sbi 没有提到解决方案,但他将其称为错误是完全正确的。
    • @hacker:我没有重复你已经写过的解决方案。我在您的帖子中添加了一个链接,以便更清楚。哦,既然你是对的,+1。 :)
    • sbi,我刚刚评论了你的答案,所以我的答案中提到了它是一个错误的事实(因为它被接受的不太可能的事件)并给予信用;-)
    【解决方案2】:

    _Ios_Openmode 似乎是某些 std lib 实现的内部类型(在我看来,这种风格类似于 Dinkumware,但我不确定)不应在该实现之外使用。如果在其他地方使用它,那就是一个错误,简单明了。

    如果你可以fix this yourself,那么一定要这样做,但你应该向他们报告错误。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-24
      • 1970-01-01
      相关资源
      最近更新 更多