xcode导入ceres遇到google::log_sinks_global

Undefined symbol: google::log_sinks_global

VINS_MOBILE提供的是arm7的libceres.a静态库文件,要想在模拟器或者macos工程上跑,需要自己编译一份x86_64的静态库文件

直接通过cmake编译出来其实就是 x86_64的静态库文件
但是导入到工程中有51个错误,其它的好解决,把他的依赖库(suitesparse、cxsparse、Eigen、glog、gflags)都导进去,或者偷懒用/usr/local/include /usr/local/lib就好

但是还会剩下Undefined symbol: google::log_sinks_global这个错误,后来看到有人说ios上编译用的miniglog,代替glog
由于对glog不太了解,以为是用了个简易版的glog,少了某些功能之类的,结果github上各种glog版本,都编译了一份 ,还是有这个问题
直到后面去看ceres的CMakeLists.txt,看到里面在找miniglog,才意识到有叫miniglog 这样一个东西,不是说叫glog的简易版。虽然的确好像是glog的简易版

但是去github下载miniglog,直接通过cmake编译可以成功,通过官网给的python build.py没法编译成功,但是直接到cmake编译出来的dylib库,这个错误虽然没了,但是会说Reason: image not loaded,大概意思就是导的这个库有问题,不适用,但是生成.a静态库文件,去改CMakeLists.txt,这个操作不熟
又想到导入ceres头文件时,还导入了ceres/internal/ceres/miniglog,因为glog主要是控制测试输出的,我直接把导ceres/internal/ceres/miniglog头文件,选择不导入,然后问题解决了

弄了大半天,结果 果然是我自己不动脑子。当然这个所谓的解决办法,其实简单粗暴了些,应该还有更好的办法

你可能感兴趣的:(工具,mac)