ceres 库引用错误处理

发布于:2022-12-25 ⋅ 阅读:(873) ⋅ 点赞:(0)

        编译好ceres库,引用时报错:

1、\glog\log_severity.h(66): fatal error C1189: #error: ERROR macro is defined. Define GLOG_NO_ABBREVIATED_SEVERITIES before including logging.h. See the document for detail.

        错误代码定位如下:

        根据代码定义,增加预定义宏。解决方式:

        项目属性->C/C++ ->预处理器->预处理器定义,加:GLOG_NO_ABBREVIATED_SEVERITIES。

        问题解决。

2、ceres\internal\numeric_diff.h(150): error C2589: “(”:“::”右边的非法标记

        报错代码为如下两段:

 原因:min/max两个宏被污染了。解决方式:

        方法1、设置项目属性,在预定义处理器中添加定义NOMINMAX来禁止使用Vsual C++的min/max宏定义。

       项目属性 -> C/C++ -> 预处理器 -> 预处理器定义 (此处添加预定义编译开关   NOMINMAX)

方法2、加上括号,与Vsual C++的min/max宏定义区分开。

        int num_params = std::max(0, user_last_param - user_first_param + 1);

修改为:

        int num_params = (std::max)(0, user_last_param - user_first_param + 1);


网站公告

今日签到

点亮在社区的每一天
去签到