VS2017使用protobuf动态链接库的编译错误问题

最近老板给我安排了新任务,使用到ssl和protobuf与第三方系统对接。在网上找了一个json和pb数据格式互转的库,搞了很久,编译还是报错:

严重性    代码    说明    项目    文件    行    禁止显示状态
错误    LNK2001    无法解析的外部符号 "private: static enum google::protobuf::FieldDescriptor::CppType const * const google::protobuf::FieldDescriptor::kTypeToCppTypeMap" (?kTypeToCppTypeMap@FieldDescriptor@protobuf@google@@0QBW4CppType@123@B)    json2pb    C:\Users\someone\source\repos\json2pb\json2pb\json2pb.obj    1    
出现这样的问题刚开始就很头疼,源代码也不是我写的,看的我也一脸懵逼,搞一天还是解决不了。新手对这些外部库的编译和引用都不是太熟,不知道是在编译protobuf库时出的问题,还是环境没配好,库的引用路径不对,或者本身就出在编译这个json2pb的转换代码时出的问题。这事放了两天,今天再在网上找解决方法各种百度,终于有大神给出解决方案了。原来我把protobuf的源代码编译成动态库在我工程中引用,使用的protobuf的东西的那个源文件,必须定义一个宏

#define PROTOBUF_USE_DLLS

加了这行代码之后就编译过了,完美解决。

语言是c++

你可能感兴趣的:(protobuf)