關於protobuf的一些問題解決思路彙總

一、外界符號問題

> 這種情況一般是沒有導入LIB庫,先去 項目->屬性->鏈接器->常規 選擇附加庫目錄,把protobuf的lib庫目錄引入進來,一般都會和項目放在一切,然後在VS項目中導入,最後在代碼中導入LIB

#pragma comment(lib,"Lib\\libprotobuf.lib")
#pragma comment(lib,"Lib\\libprotobuf-lite.lib")

二、庫不匹配

> 一般這種情況都是編譯項和你編譯的protobuf的庫版本不匹配,debug的用debug模式,Release版本的選擇Release版本,另外就是運行庫不匹配  需要去選擇對應的允許庫  項目->屬性-> C/C++ -> 代碼生成 然後選擇運行庫,選擇對應的值,例如我的是我當前的值是MTd(不匹配的),我應該去選擇對應的MT(匹配值)

這裏寫圖片描述

以上問題均屬於C++

protobuf的使用問題

一、解析的問題

C#的會有一個主要問題是 TAG ZERO 標籤爲0的情況,這種情況一般是消息裏面含有不全是proto信息,有其他的二進制摻雜,一般情況都是例如 64字節的消息用了 1024字節來存,造成剩餘空間,protobuf並不會去截取,或許可以截取(沒有找到具體的反序列API),這時候我們就得需要自己去重新組裝信息,簡單暴力點的就是直接把消息後面的截取掉,用新的容器來裝,保證長度一致,再去解析。以下測試代碼

這裏寫圖片描述

二、C++解析消息問題

暫時沒有發現什麼問題

三、使用自己的長度解析錯誤?

目前我還不清楚這個問題具體要表達的是什麼,信息是長度不一致嗎?還是我需要在二進制消息上在包裝一層base64,防止丟失精度?不太清楚這個問題,這是偶然性的,不會一直出現,等後續發現和解決後再記錄。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章