[英]Protobuf dynamic and static library
我有兩個自定義的protobuf庫。 一種是動態的,另一種是靜態的。 靜態庫有一條消息:
message DataType
{
int number = 1;
string name_1 = 2;
string name_2 = 3;
string name_3 = 4;
}
// The dynamic lib has a message:
message MyMessage
{
DataType type = 1;
}
我通過將靜態原型庫鏈接到它來構建動態原型庫。 然后,我建立了鏈接動態原型庫的exe應用程序。
問題是當我設置name_1,name_2或name_3之一時,它們都具有此值。 我認為所有這些字符串都具有相同的緩沖區。 如果將動態庫轉換為靜態庫,則問題消失。 誰能解釋我這是怎么回事? 謝謝。
如果未設置字段,則應返回空字符串。 請在此處檢查文檔。
如果您使用的是版本2,則可以查詢該字段是否由has_name_x()
設置。
順便說一下,有幾種設置值的方法:
void set_name_x(const string& value)
C++11
,可以移動字符串值: void set_name_x(string&& value)
void set_allocated_name_x(string* value)
string* mutable_name_x()
我建議您熟悉protobuf並讓其管理內存並使用set_name_x
。 如果這還不夠,您可以使用手動內存管理來優化代碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.