2016-12-08 73 views
1

我已創建一個addressbook.proto與該即時通訊良好,產生以下兩個文件protobuffer throw runtime error as Failed to parse address book in latest latest version 3.0.0?

addressbook.pb.h 
addressbook.pb.cc 

protoc -I=$SRC_DIR --cpp_out=$DST_DIR $SRC_DIR/addressbook.proto

我有看過我的地址簿名稱readproto.cc

readproto代碼。立方厘米

int main(int argc, char* argv[]) { 
if (argc != 2) { 
    cerr << "Usage: " << argv[0] << " ADDRESS_BOOK_FILE" << endl; 
    return -1; 
    } 


tutorial::AddressBook address_book; 

    { 
    // Read the existing address book. 
    fstream input(argv[1], ios::in | ios::binary); 
    if (!input) { 
     cout << argv[1] << ": File not found. Creating a new file." << endl; 
    } else if (!address_book.ParseFromIstream(&input)) { 
     cerr << "Failed to parse address book." << endl; 
     return -1; 
    } 
    } 

---- 
} 

和我編譯爲

C++ readproto.cc addressbook.pb.cc`pkg配置--cflags --libs protobuf的

我得到的可執行文件沒有什麼不好,但我的疑問是我應該與此可執行加載哪些文件?

我累

./a.out addressbook.proto 

不知道哪些文件需要加載addressbook.proto是好?

result : Failed to parse address book 

我是新與protobuffer需要幫助它從過去三天在這個.Struggling這是我最後的希望PLSS幫助,謝謝

回答

1

由於您使用的是protobuf tutorial,打電話給你的程序是這樣的:

./a.out my_adress_book.bin 

這將創建一個空my_adress_book.bin,然後提示你添加條目。

這部分是創建一個空文件:

fstream input(argv[1], ios::in | ios::binary); 
if (!input) { 
    cout << argv[1] << ": File not found. Creating a new file." << endl; 
} 
.... 
+0

我從我在執行所在的路徑已經在下面的代碼 https://developers.google.com/protocol-buffers/docs/cpptutorial 你可以請讓從這個鏈接,我需要有bin知道採取作爲參數 – user7953556

+0

看到https://developers.google.com/protocol-buffers/docs/cpptutorial#writing-a-message你運行你的程序是這樣的:。./a.out my_adress_book.bin – HughB

+0

謝謝你的工作時? – user7953556

0

您必須指定實際的二進制數據。數據格式在.proto文件中定義。嘗試首先將數據導出到文件。然後閱讀它。

+0

能否請你告訴我,比如無法捕捉你的話請? – user7953556

+0

ofstream file(「./ serial.data」); address_book.SerializeToOstream(&file); – JazzSoft

相關問題