Ошибка при использовании Google Protobuf - PullRequest
0 голосов
/ 26 августа 2010
#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);

Выше следует учебник здесь , но при компиляции получаются следующие ошибки:

error C2061: syntax error : identifier 'io'

Что здесь может быть не так? ОБНОВЛЕНИЕ

Когда я изменил вышеупомянутое значение на using namespace google::protobuf::io; Я получаю новую ошибку, говоря, что символ FileOutputStream не определен, почему?

Ответы [ 3 ]

2 голосов
/ 27 января 2012

В ответ на обновленный вопрос о том, почему 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, которые включены только в полную (не lite) библиотеку protobuf. * ​​1012 *

Эти реализации включают дескрипторы файлов Unix иC ++ iostreams.

1 голос
/ 26 августа 2010
#include <google/protobuf/io/coded_stream.h>
namespace google::protobuf::io

Это плохо сформировано. Вы должны быть using namespace google::protobuf::io;, я думаю, исходя из оставшегося кода.

Получается, что сегмент кода для верха предназначен только для этого заголовка, а учебник зависит от всей библиотеки. Вы просто копируете и вставляете код, даже не понимая этого. Я не собираюсь сидеть здесь и отлаживать каждую ошибку, с которой вы можете столкнуться. Вы должны будете на самом деле читать страницы библиотеки и сначала знать C ++.

1 голос
/ 26 августа 2010

Разве вы не имеете в виду

using namespace google::protobuf::io;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...