使用Google的protobuf时出错

时间:2010-08-26 14:21:44

标签: c++ protocol-buffers

#include <google/protobuf/io/coded_stream.h>
namespace google::protobuf::io

....
int fd = open("myfile", O_WRONLY);
ZeroCopyOutputStream* raw_output = new FileOutputStream(fd);
CodedOutputStream* coded_output = new CodedOutputStream(raw_output);

以上是在教程here之后,但是当我编译时会出现以下错误:

error C2061: syntax error : identifier 'io'

这里有什么不妥?

更新

当我将上述内容更改为using namespace google::protobuf::io;时,我收到一条新错误,指出未定义符号FileOutputStream,为什么会这样?

3 个答案:

答案 0 :(得分:2)

回应有关未声明FileOutputStream原因的更新问题...

我认为你需要

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

根据文档:

http://code.google.com/apis/protocolbuffers/docs/reference/cpp/google.protobuf.io.zero_copy_stream_impl.html

  

此文件包含在其中定义的接口的常见实现   zero_copy_stream.h只包含在完整(非精简版)中   protobuf库。

     

这些实现包括Unix文件描述符和C ++ iostream。

答案 1 :(得分:1)

你不是说

using namespace google::protobuf::io;

答案 2 :(得分:1)

#include <google/protobuf/io/coded_stream.h>
namespace google::protobuf::io

这是不正确的。您需要using namespace google::protobuf::io;,我猜测其余的已发布代码。

为什么top的代码段仅用于该头,教程依赖于整个库。你只是复制和粘贴代码而不理解它。我不会坐在这里调试你可能遇到的每一个错误。您必须首先阅读库页面并首先了解C ++。