google::protobuf::io::FileOutputStream 未定义?

Kni*_*our 3 protocol-buffers visual-c++

我正在尝试使用协议缓冲区将多个消息序列化到一个文件 - 按照此处所示的实现- 但我遇到了一个问题,即我无法FileOutputStream访问<zero_copy_stream_impl.h>.

根据API 文档,该类FileOutputStream位于命名空间下google::protobuf::io- 但我在该命名空间下可以看到的唯一定义是CodedOutputStream, CodedInputStream, ZeroCopyOutputStream, 和ZeroCopyInputStream

有谁对如何解决这个问题有任何想法?仅供参考,我正在使用带有 protobuf-2.4.0a 构建的 Microsoft Visual Studio 2010。这是我的代码片段和生成的错误消息(智能感知以及编译器错误):

int outfd = _open(fileName.c_str(), _O_CREAT | _O_BINARY | _O_APPEND | _O_WRONLY);
google::protobuf::io::ZeroCopyOutputStream *output = new google::protobuf::io::FileOutputStream(outfd);
Run Code Online (Sandbox Code Playgroud)

警告 C4996:“_open”:此函数或变量可能不安全。考虑使用 _sopen_s 代替。要禁用弃用,请使用 _CRT_SECURE_NO_WARNINGS。

IntelliSense:需要类型说明符

错误 C2061:语法错误:标识符“FileOutputStream”

错误 C2039:“FileOutputStream”:不是“google::protobuf::io”的成员

Kni*_*our 5

看来我的代码明确要求这样做:

#include <google/protobuf/io/zero_copy_stream_impl.h>

我认为默认情况下会包含它,但显然情况并非如此。感谢 Kenton Varda 指出了这一点。