win10安装ceres环境

2023-05-16

    ceres是一个开源的c++库,在windows上安装有点复杂,它依赖其他三个库。Eigen,gflags,glog。好在这些依赖都可以通过源码安装。在windows上进行源码编译安装,需要对应的环境。这里的环境就是vs2017,cmake-3.14.0。

    vs2017自带了gcc,g++编译环境,而cmake正好需要g++编译环境。

    ceres源码都可以在官方下载到,这里使用的版本较早:

     gflags    2.2.1     需要提前编译

     glog       0.3.5     需要提前编译

     Eigen     3.4        只需要源码,不需要提前编译

     ceres-resolve  1.13.0   依赖其他三个库,最后编译

     这里给出csdn提供的下载:ceres安装包及相关依赖包

     编译安装

     1、编译gflags

     这里有个小提示,就是gflags源码需要修改一个地方,src/config.h.in,需要将下面代码删除。

     打开cmake-gui,根据界面提示,选择gflags源码位置和编译位置,点击"Configure"按钮,弹出编译选项,这里指定工程生成器为:Visual Studio 15 2017。生成器平台可选项:x64,最后点击"Finish"。第一次Configure会出现红色警告。    

    警告可以忽略,勾选"BUILD_SHARED_LIBS",这一步是生成动态链接库gflags.dll的。 

    再次点击Configure,警告消失:

    接着,可以进行生成了。点击"Generate"按钮,源码工程就生成好了。接着"Open Project"按钮可点击,直接点击"Open Project"按钮,在vs2017中打开项目。

打开vs2017之后,可以直接在Debug模式下生成:右键ALL_BUILD项目,直接生成。

如果不报错,那么就会生成gflags.dll等相关文件,还有头文件,lib库文件。 

     2、编译glog

    按照编译gflags的思路编译glog会很快,同样的,在cmake-gui界面中指定源码位置和编译位置,点击"Configure"按钮,第一次也会出现警告。这里因为glog需要依赖gflags库,所以需要指定gflags编译后的位置。     

 

     指定gflags_DIR位置之后,再次"Configure" ,警告消失。

    可以点击“Generate”按钮,生成工程代码。最后利用vs2017打开glog工程,右键ALL_BUILD项目,生成。 

     3、编译ceres

     按照上面的思路,选择ceres源码和编译位置,点击"Configure"按钮,不仅会有红色警告提示,还有报错。

    这时候,勾选EIGENSPARSE选项,并设置EIGEN_INCLUDE_DIR目录,指定Eigen源码位置。再次Configure,这时候,会出现没有指定gflags编译目录参数gflags_DIR,同样的,设置gflags-build目录即可。如果CMAKE_BUILD_TYPE显示红色警告,就添加一个Debug参数。最后的结果如下所示:

    最后,没有警告,可以"Generate"生成项目,然后"Open Project",利用vs2017打开工程,直接在Debug模式下,右键ALL_BUILD工程,生成。这个过程很慢,因为最后会生成10G的文件,其中包括可执行程序示例程序,在bin\Debug目录下有helloworld.exe,我们在cmd命令行下可以直接运行,他就是ceres入门程序。(我经过了几次安装,有一次没有把gflags.dll加入windows/system32目录下,也可以运行成功示例helloworld,后来几次安装都提示缺少gflags.dll文件,将gflags编译产生的gflags-build\bin\Debug\gflags.dll加入C:\Windows\System32目录下就好了)

     以上没有报错,整个编译结束。

============================================================

     使用ceres

     这里主要针对开发环境vs2017,需要头文件,依赖库,动态链接库。

     一、在vs2017中新建项目

    如果运行示例程序提示缺失gflags.dll动态链接库,就把将gflags编译产生的gflags-build\bin\Debug\gflags.dll加入C:\Windows\System32目录下就好了。

     二、准备头文件和库文件

     在项目路径下新建include文件夹和lib文件夹

     这个版本编译结束,在使用头文件的时候,有几个需要注意的地方,Eigen没有include文件,直接将Eigen源码目录下的Eigen目录全部拷贝即可。

     glog编译后的头文件,没有include目录,直接在编译目录下一个叫glog的文件夹,缺失一个log_serverity.h文件,但是在源码src/glog目录下可以找到。

     ceres头文件在源码目录中,但是源码目录中还有一个config目录,里面包含了一个在include目录中没有的头文件ceres/internal/config.h,拷贝头文件的时候,需要合并拷贝。

 需要的库文件:ceres编译后的lib\Debug目录下的ceres-debug.lib,gflags编译后lib\Debug目录下的两个文件:gflags.lib和gflags_nothreads.lib,glog编译后lib\Debug目录下的一个文件glog.lib。

    三、项目设置

右键项目属性,对项目进行如下设置:

1、vc++目录,将项目下的包含目录和库目录依次指定为include目录和lib目录,如下图所示:

     2、c/c++常规,这里需要设置附加包含目录,将include目录指定即可。

     3、c/c++->链接器->输入,这里需要手动将lib目录下的lib文件依次添加到附加依赖项中。

    准备示例源码:

#include <iostream>
#include "ceres/ceres.h"
#include "glog/logging.h"


using ceres::AutoDiffCostFunction;
using ceres::CostFunction;
using ceres::Problem;
using ceres::Solver;

struct CostFunctor {
	template<typename T>
	bool operator()(const T* const x, T* residual) const {
		residual[0] = T(10.0) - x[0];
		return true;
	}
};
int main(int argc,char** argv)
{
	google::InitGoogleLogging(argv[0]);
	double initial_x = 5.0;
	double x = initial_x;

	Problem problem;

	CostFunction* cost_function = new AutoDiffCostFunction<CostFunctor, 1, 1>(new CostFunctor);

	problem.AddResidualBlock(cost_function, NULL, &x);

	Solver::Options options;
	options.linear_solver_type = ceres::DENSE_QR;
	options.minimizer_progress_to_stdout = true;
	Solver::Summary summary;
	Solve(options, &problem, &summary);
	std::cout << summary.BriefReport() << "\n";
	std::cout << "x : " << initial_x << " -> " << x << "\n";
	return 0;
}

     开始执行,报错:

     按照提示,修改ceres/jet.h头文件,将j0,j1,jn分别改为标准c++兼容的_j0,_j1,_jn,顺利编译通过。 

 这时候,运行程序,可能出现前面所说的缺少gflags.dll动态链接库。

     解决办法前面提到过,将gflags-build\bin\Debug\gflags.dll文件加入C:\Windows\System32即可。

正确运行程序控制台输出:

     以上过程为win10编译安装ceres库以及通过vs2017编辑器运行代码介绍,中间很多小细节,希望对再次安装的人有帮助。 编译生成的时候,vs2017下全部使用的是Debug模式,虽然有的文章提到要使用Release模式。

      在cmake-gui中,编译顺序,依次是gflags,glog,ceres,因为他们互相依赖,configure出错,基本就是没找到依赖项编译后的位置。反复configure警告可以全部消失,最后generate,直到在vs2017中生成成功。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

win10安装ceres环境 的相关文章

  • ubuntu 20.04 安装 ceres库

    文章目录 一 安装依赖项二 下载源码 xff1a 三 编译并且安装1 进入正确位置 xff1a 2 建立build xff0c 并进入3 编译4 安装 安装完成后是下面这个界面 xff1a 一 安装依赖项 sudo apt span cla
  • WIN10更改代理设置后无法保存的解决办法

    每次更改代理之后保存 推出界面再进来发现还是和原来一样 这应该是代理报错失败 解决办法如下 win R regedit 打开注册表编辑器 找到计算机 HKEY LOCAL MACHINE SOFTWARE Policies Microsof
  • win10环境变量设置

    在装一些软件的时候 经常需要设置环境变量 但win10与win7有一些不同 1 打开文件资源管理器 2 最左边一列有 此电脑 点击 3 界面最上面一列会有 属性 点击 4 左边 高级系统设置 点击 5 环境变量 点击 有一个注意的地方是一般
  • Access violation at address 00000000. Read of address 00000000.的解决办法

    Access violation at address 00000000 Read of address 00000000 原理 解决办法 在使用spacesniffer查看C盘空间的时候报错 原理 这个问题是关于Access Violat
  • win10通过命令或通过控制面板关闭防火墙

    1 点击控制面板 Win键 R 输入control enter 点击防火墙 打开或关闭防火墙 关闭防火墙 2 通过命令关闭防火墙 关闭防火墙 netsh firewall set opmode mode disable 查看防火墙状态 Ne
  • 基于hadoop的电影推荐系统的实现

    1 设计任务 通过编写代码 设计一个基于Hadoop的电影推荐系统 通过此推荐系统的编写 掌握在Hadoop平台上的文件操作 数据处理的技能 工程文件放在百度网盘了 运行run py即可启动程序 由于代码年份久远 我已尽量打了注释 大家可以
  • win10 电脑 .Net framework3.5 组件无法安装0x800f801f

    最近在win10上安装了MotorControl Workbench 5 4 0软件需要用到 Net framework3 5 但是安装Net framework3 5老是出错 无论是下载离线安装包安装 还是通过 控制面板 中 程序 的 启
  • vhdx中的win10进行大版本系统升级

    文章目录 前言 普通的win10大版本iso升级方式 vhdx中的win10大版本升级方式 难点分析 无法在虚拟驱动器上安装windows 解决方案 HyperV升级vhdx win10 过程效果图 hyperV虚机创建mbr引导启动项 h
  • C++利用zxing识别二维码

    C 利用zxing识别二维码 下载编译 配置使用 Win10 x64 VS2015 VS2019 下载编译 1 下载zxing包 并解压 下载地址 https github com glassechidna zxing cpp build文
  • 针对Anaconda-navigator和spyder打不开的问题

    胡乱安装pyqt和qtpy等会导致qt的依赖混乱 以致于ananconda navigator和spyder会有打不开的情况发生 解决的办法有 1 常规套路 参考 https www cnblogs com zlslch p 8066662
  • 【系统】win11怎么退回win10

    根据微软官方提供的回滚方案显示 在升级Win11之后的10天之内 用户可以通过系统恢复选项将Win11还原Win10 操作方式也比较简单 大家可以打开系统设置 找到相应选项 选择并确认后即可轻松将Win11回退早期版本 详细操作步骤如下 一
  • Win 10系统无法连接蓝牙耳机问题

    问题描述 本人刚入手的笔记本电脑 设置里面也有 蓝牙 的开关 由于处于实验室的环境不能开外放 有线耳机显得很不舒服 于是本人兴奋地拿起平时用的蓝牙耳机 想和电脑连起来 但是打开蓝牙开关之后 遇到了下面的情况 打开添加完设备之后 不仅仅是本人
  • WIN10超级终端下载链接及使用教程

    地址见文末 1 直接运行 随便命名 2选择连接的COM口 3 选择对应的波特率 我的是115200 数据流控制选择无 4点击应用 给开发板上电即可 链接一 https pan baidu com s 1iDf16H8BsZ53lOVqmQO
  • 在pycharm上安装Tensorflow1.13 win10

    Tensorflow安装教程 清明回家就折腾了几天的tensorflow 我是使用pycharm安装的 所以下面基于pycharm进行安装 tensorflow1 13 0基础配置 python3 7 cuda10 0 适合cuda的cuD
  • VScode配置C/C++环境,MinGW,最新成功实例分享(win10)

    win10 VScode配置C语言 自己调试成功后 分享出来 首先下载VScode 这个十分简单 直接官网搜索最新的就行了 VScode下载官网VScode下载官网 然后安装 其中windows下支持C语言的编译 有两个好用的分别是MinG
  • 解决win10中无法打开CHM文件的方法

    CHM文件是非常常见的帮助文件格式 由于其便携性 很多语言的API会采用chm格式 win7 win8 1 win10系统 由于采用了UAC 致使原本在xp里浏览正常的chm文件出现空白而无法正常显示 解决方法 右键选择需要打开的文件 选择
  • (一)win10安装hadoop 2.8.5(详细步骤)

    目录 1 JDK 2 Hadoop 2 1 下载 2 2 配置环境变量 2 3 配置文件 2 4 格式化hdfs 已解决 格式化总是报错 The markup in the document following the root eleme
  • windows下修改mysql时区设置

    root身份登录MySQL mysql u root p 查看time zone变量 show variables like time zone 显示 time zone 变量 设置time zone变量 set time zone 08
  • log4j漏洞复现

    第一步 下载marshalsec 源码进行编译 https github com mbechler marshalsec 下载后进行编译打包 mvn clean package DskipTests 得到jar文件 在这里插入图片描述 第二
  • 联想Win10安装Ubuntu双系统教程

    前言 最近为了更好的做一名程序员 猿 所以准备装一个双系统 也就是Ubuntu系统 网上坑太多 所以决定自己写一点操作步骤 首先看一下我的计算机配置 联想小新700 Tip 这里的安装步骤仅仅针对联想Win10改型号或者相关型号 其他品牌型

随机推荐

  • npm安装windows-build-tools一直卡在successfully installed python2.7不动

    以前安装过windows build tools xff0c 很顺利的 xff0c 没想到最近在别的机器上安装 xff0c 出现了卡住不动的情况 xff0c 就是如题的问题 其实这个问题出现在执行vs BuildTools exe安装问题上
  • C++学习笔记一 —— 两个类文件互相引用的处理情况

    先记录一些零碎的知识点 xff1a 1 一个类可以被声明多次 xff0c 但只能定义一次 xff0c 也就是可以 class B class B class B class B 这样子 2 一个类 C 的声明中 xff08 函数只声明还没定
  • koa设置静态资源以加载html页面

    koa是express之后又一个node框架 xff0c 它可以很方便的构建http服务 一般 xff0c 我们看到的koa是配合koa router路由来做服务端请求控制 xff0c 大部分是要么返回string xff0c 要么返回js
  • springboot实现jsonp

    jsonp是ajax跨域解决方案的一种办法 xff0c 就是借助标签 lt script gt lt script gt 可以实现不同域之间数据请求的一种方式 xff0c 类似iframe xff0c 不受跨域限制 xff0c 它请求返回之
  • koa利用koa-views通过路由返回html页面

    前面一篇博客介绍了koa借助koa static依赖可以实现以静态资源的形式加载html xff0c 但是没有路由功能 xff0c 一般而言 xff0c 前后端分离之后 xff0c 路由控制是由前端控制 xff0c 也有一些不分离的项目 x
  • koa解决跨域问题

    koa作为一个node http服务框架 xff0c 它解决跨域问题 xff0c 跟其他框架跨域类似 xff0c 可以通过自定义中间件的方式对请求做处理 xff0c 也可以通过使用封装好的 64 koa cors依赖 xff0c 两行代码搞
  • nginx解决跨域问题

    跨域问题 xff0c 是因为浏览器同源策略 xff0c 页面从一个域发起另一个域的异步ajax请求时 xff0c 不被认可导致 如果我们的请求在一个域里面 xff0c 那么浏览器就会认为是安全的 xff0c 就不会造成跨域 xff0c 而n
  • cookie属性max-age与expires同时存在时谁会生效

    我以前面试前端的时候 xff0c 面试官问过这个问题 xff0c 这是一个比较刁钻的问题 xff0c 好像很难选择 max age表示最大生命周期 xff0c expires表示过期时间 xff0c cookie使用其中任何一个 xff0c
  • 带cookie的异步ajax跨域请求问题

    ajax跨域携带cookie需要增加一个参数 xff0c xhrFields withCredentials true xff0c 而且这个时候的cookie是种在服务端接口域里面的 xff0c 而不是页面所在的域 服务端解决跨域问题的时候
  • sqlmap工具与sql注入漏洞测试

    sql注入是我们在开发与面试中经常听到的一个词语 xff0c 它利用sql语句本身执行的特点 xff0c 加入一些特定的语句拼接 xff0c 骗过sql编译 xff0c 最后执行 xff0c 结果就出现意想不到的情况 我在之前的工作中并不了
  • Javascript保留两位小数

    javascript语言 xff0c 因为是弱类型语言 xff0c 没有java那么多类型 xff0c 所以在处理浮点数保留两位小数上 xff0c 没有那么多格式化办法 javascript语言中字符串和整数 xff0c 浮点数是有区别的
  • linux下strace命令跟踪java进程

    strace命令的使用 xff0c 是看了马士兵老师讲的netty底层原理课程 xff0c 里面举了一个例子 xff0c 使用java程序编写一个简单的socket服务器 xff0c 然后等待客户端连接 本身 xff0c 这个程序很简单 x
  • Deepin 下安装 Vmware 无法联网的问题

    问题描述 1 Could not connect 39 Ethernet0 39 to virtual network 39 dev vmnet0 39 解决办法 使用sudo vmware networks start查看是否能够启动网络
  • Mac下使用虚拟专用网络

    虚拟专用网络 xff0c 简称vpn xff0c 目前还是有很多地方有使用到的 xff0c 除了越狱 xff0c 很多公司也会给员工开通虚拟专用网的账号 xff0c 这样 xff0c 员工即使在家里也可以方便的与公司内网进行联通 xff0c
  • Mac下远程连接windows

    如题 xff0c 如果在windows系统下 xff0c 一台机器A如果开启了容许远程连接 xff0c 那么可以直接通过另一台机器B的远程桌面连接客户端 xff0c 输入主机地址 xff0c 然后加上用户名和密码 xff0c 就可以登入机器
  • 索引失效问题整理

    在面试的时候 xff0c 数据库方面的问题对于开发人员来说 xff0c 是绕不过的一个点 xff0c 而数据库方面 xff0c 很少直接面试SQL怎么写 xff0c 而是问效率相关的问题 xff0c 索引是提高查询效率的一种手段 xff0c
  • geoserver配合openlayers框架加载地图

    geoserver地图服务器如果搭建成功 xff0c 那么会有很多图层示例 这些图层可以用作练手示例 在实际工作中 xff0c 可能需要我们自己设计地图 xff0c 自己发布 xff0c 然后使用 这里以上一篇最后发布的中国地图为例 xff
  • Java操作mysql插入记录带时间戳时差问题

    如题所示 xff0c 我们在做mybatis相关项目的时候 xff0c 会用到mysql xff0c 如今更多的是直接使用springboot 43 mybatis组合 这样 xff0c 在配置数据源的时候 xff0c 会有这样的配置 xf
  • ArcGis导入经纬度坐标然后导出shp文件

    如题所示 xff0c 一般使用ArcGis制作shp文件 xff0c 需要数据 xff0c 这里直接利用经纬度坐标即可 1 获取经纬度数据 经纬度坐标从哪里获取 xff0c 这里推荐一个方法 xff1a 使用一个html页面 xff0c 配
  • win10安装ceres环境

    ceres是一个开源的c 43 43 库 xff0c 在windows上安装有点复杂 xff0c 它依赖其他三个库 Eigen gflags glog 好在这些依赖都可以通过源码安装 在windows上进行源码编译安装 xff0c 需要对应