环境:win7 ,vs2010
目的:安装protobuf
问题:
test.pb.obj : error LNK2019: 无法解析的外部符号 "public: virtual __thiscall google::protobuf::MessageLite::~MessageLite(void)" (??1MessageLite@protobuf@google@@UAE@XZ),该符号在函数 __unwindfunclet$??0People@protoc@@QAE@XZ$0 中被引用
1>test.pb.obj : error LNK2001: 无法解析的外部符号 "public: virtual class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __thiscall google::protobuf::MessageLite::InitializationErrorString(void)const " (?InitializationErrorString@MessageLite@protobuf@google@@UBE?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@XZ)
分析原因:
lib 库没有加载,或者路径不对
解决办法:
1.用代码 :#pragma comment(lib,"libprotobuf.lib")
#pragma comment(lib,"libprotoc.lib")
2.右键->属性->连接器->输入->附加依赖项 添加libprotobuf.lib,libprotoc.lib
俩种方法都是一样的,都是在工程里面添加静态库。
扩展:
#pragma是一个很常用的关键字。
#pragma pack(n) 以n个字节对齐(struct 存在对齐补齐)。最常用的场合应该是网络处理。n 大于结构体补齐的字节时候,按照结构体补齐的字节对齐,反之则按照n字节对齐。
#pragma pop 取消n字节对齐。