#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
,为什么会这样?
答案 0 :(得分:2)
回应有关未声明FileOutputStream原因的更新问题...
我认为你需要
#include <google/protobuf/io/zero_copy_stream_impl.h>
根据文档:
此文件包含在其中定义的接口的常见实现 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 ++。