我下载了protobuf-21.2并执行以下指令来安装protobuf:
./autogen.sh && ./configure && make && make check && sudo make install
我用下面的例子来练习:
test.proto:
syntax = "proto3";
message Test {
optional string name =1;
optional int32 age = 2;
}
test.cpp:
#include<iostream>
#include "test.pb.h"
using namespace std;
int main()
{
Test pro_t;
pro_t.set_age(3);
cout<<pro_t.age();
return 0;
}
运行命令编译proto文件:
protoc -I=./ --cpp_out=./ ./test.proto
运行命令来编译cpp文件:
g++ -o test test.cpp test.pb.cc -lprotobuf -I /usr/local/include/google/protobuf/ -L /usr/local/lib -std=c++11
但是当我做cpp的时候,我遇到了一个问题:
Undefined symbols for architecture arm64:
"google::protobuf::internal::InternalMetadata::~InternalMetadata()", referenced from:
google::protobuf::MessageLite::~MessageLite() in test-0f87f5.o
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
我不知道我做错了什么。
1条答案
按热度按时间atmip9wb1#
将构建类型从调试更改为发布解决了我的问题。