有一段时间没有用到protobuf了,长时间不用,都忘光了;所以重新弄一下addressbook.proto。没想碰到一堆老问题,一时没想起来,花了1个多小时,所以特别备注一下,提醒别再踏坑。
源码还是那两个,
D:\vsNCNN\protobuf391\examples\add_person.cc
D:\vsNCNN\protobuf391\examples\list_people.cc
然后,版本要一致,发现用官方的生成文件会有一大堆错误,我最后用了自己编译的文件。
cd D:\vsNCNN\protobuf391_example protoc -I=. --cpp_out=. addressbook.proto
cd D:\vsNCNN\protobuf391_example\google\protobuf protoc -I=. --cpp_out=. timestamp.proto
timestamp这一步不是必须的,但可以看出我把那个timestamp.proto移到addressbook.proto的相对路径下了,避免protoc找不到。
然后新建一个vs2019的工程,开始再跑一次,然后就发现一个问题: fixed_address_empty_string;" · Issue #2502 · protocolbuffers/protobuf · GitHub">can not find " extend ExplicitlyConstructed< ::std::string> fixed_address_empty_string;" · Issue #2502 · protocolbuffers/protobuf · GitHub
error LNK2001: class google::protobuf::internal::ExplicitlyConstructed google::protobuf::internal::fixed_address_empty_string"
看了一下,我以前编译的项目用的是DLL的方式,所以自己赶紧在项目的设置里添加了PROTOBUF_USE_DLLS这个预定义,然后问题就解决了。
本文结束。