最近老板给我安排了新任务,使用到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++