2010-08-26 9 views
0
#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); 

ci-dessus est suivant le tutoriel here, mais quand je compile obtenir les erreurs suivantes:Erreur lors de l'utilisation de protobuf Google

error C2061: syntax error : identifier 'io' 

Que peut-on ne va pas ici?

MISE À JOUR

Quand je changé le dessus using namespace google::protobuf::io; je reçois une nouvelle erreur disant ne se définit pas le symbole FileOutputStream, comment ça se fait?

Répondre

1

Ne pas vous dire

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

Ceci est mal formé. Vous devez être using namespace google::protobuf::io;, je devine du reste du code posté.

Comment se fait est que le segment de code pour le sommet est pour cette tête uniquement, et le tutoriel dépend de l'ensemble. Vous êtes juste en train de copier et coller du code sans même le comprendre. Je ne vais pas m'asseoir ici et déboguer toutes les erreurs que vous pourriez rencontrer. Vous devrez lire les pages de la bibliothèque et connaître le C++ en premier.

+0

Merci l'homme! Après ce changement, je reçois une nouvelle erreur, comment ça se fait? – user198729

+0

Comment se fait-il que le segment de code pour le haut est pour cet en-tête seulement, et le tutoriel dépend de la bibliothèque entière. Vous êtes juste en train de copier et coller du code sans même le comprendre. Je ne vais pas m'asseoir ici et déboguer toutes les erreurs que vous pourriez rencontrer. – Puppy

2

En réponse à la question mise à jour au sujet de pourquoi FileOutputStream n'est pas déclaré ...

Je pense que vous avez besoin

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

par les docs:

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

Cette fichier contient les implémentations communes des interfaces définies dans zero_copy_stream.h qui sont uniquement inclus dans la bibliothèque protobuf complète (non-lite) .

Ces implémentations incluent des descripteurs de fichiers Unix et des flux ios C++.