win10+vs2017编译glog的各种错误及解决方案

编译环境:

vs2017 (V141)企业版

win10

sdk:10.0.17763.0

 

1
严重性    代码    说明    项目    路径    文件    行    禁止显示状态
错误    LNK2019    无法解析的外部符号 "__declspec(dllimport) public: void __cdecl std::basic_ios<char,struct std::char_traits<char> >::setstate(int,bool)" (__imp_?setstate@?$basic_ios@DU?$char_traits@D@std@@@std@@QEAAXH_N@Z),该符号在函数 "class std::basic_ostream<char,struct std::char_traits<char> > & __cdecl std::operator<<<struct std::char_traits<char> >(class std::basic_ostream<char,struct std::char_traits<char> > &,char const *)" (??$?6U?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@PEBD@Z) 中被引用    InventRobot    ******\InventRobot    ******\handle.obj    1
    
参考:
http://cache.baiducontent.com/c?m=gdvAShxCfjrr34aSW02-Fh_zb8dqnE2L1z-7EfdPx9yaTiMhUkDtADZf5TBkgIM0InoWnCl8_QInEPMCoSg3m44vofWCvmsy0KopVsX3biokNWj5aif2RSFQt66n7arQbXLoltsTXkTP1jSYLKdRjmYSMzand0d8Dy2oucAFRsB79dzfdQRY7hG5dPYlOyl8i8lgRZxxvwvVt206bj8Od_&p=8b2a971d86cc46ac1ea2d73e5752&newp=b474c54ad1c01bf90be2963f445592695803ed603bd5c44324b9d71fd325001c1b69e7b122241400d8c2766600a8435cebf231723c1766dada9fca458ae7c47279&s=d82c8d1619ad8176&user=baidu&fm=sc&query=std%3A%3Abasic%5Fios+setstate%28int%2Cbool%29&qid=d5debdcf000aeef0&p1=5

研究后发现是glog.lib链接的问题,因为glog运行库为/MDd
我程序里用的MFC静态库,运行库为/MTd.
修改为使用MFC动态库,运行库改为/MDd就好了.


2
严重性    代码    说明    项目    路径    文件    行    禁止显示状态
错误    LNK2001    无法解析的外部符号 "__declspec(dllimport) public: __cdecl google::LogMessage::LogMessage(char const *,int)" (__imp_??0LogMessage@google@@QEAA@PEBDH@Z)    InventRobot    ******serial_device.obj    1    


解决方案:
工程-属性-C/C++
预处理器定义加上GOOGLE_GLOG_DLL_DECL=

参考:
https://blog.csdn.net/g9208/article/details/102633056

3
加载 glog 编译报错:
 ERROR macro is defined. Define GLOG_NO_ABBREVIATED_SEVERITIES before including logging.h. See the document for detail.

解决方法:
在工程加上预编译宏GLOG_NO_ABBREVIATED_SEVERITIES

参考:
https://blog.csdn.net/cm333666/article/details/100227786

4 引用glog的工程,编译时出现msvc版本警告

原因:引用glog的工程是unicode,glog是多字节
解决方案:将glog的工程属性改为unicode,默认的是多字节

5 引用glog的工程,编译时出现link错误
解决方案:将glog的工程改为64位,默认的是32位,记着改目标计算机设置。重新编译生成x64的lib
 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值