最近在用sba,一直找不到怎么在window下编译,最近看到一篇博客,写的非常不错,自己编译通过了,大家可以参考。
windows下 Sparse Bundle Adjustment 编译问题
很多论文中提到了利用Bundle Adjustment进行优化的问题。开始准备自己编写一个,可惜水平有限,一直在搁浅当中。不过好在存在一种开源软件叫做Sba,即Sparse Bundle Adjustment可以供使用,省去了不少功夫。
可是,把文件包下载来后,make总有问题。今天终于找到了解决的办法。简单记录一下。
首先,你会发现,文件包中有好多的makefile:
(1) 一般都会用Makefile,但是编译到一半出问题: cd demo make:找不到相关路径。这个问题我看了很久的makefile源码,也看不出个端倪。暂且不管,不用第一个。
(2)icc不知到是啥东西,果断不用它。
(3)Makedfile.vc一般用VC环境下的nmake进行编译。本文就用它进行编译。
首先进入VC环境。打开cmd命令行,cd进入VC安装目录,运行vcvars32.bat:
然后进入sba文件夹进行编译,写此文时的最新版本是sba-1.6。执行nmake /f Makefile.vc:
不出意外的话,已经出现问题了。
开始以为是sba自身的lib出了问题,不过最后在网上找到了相关的库。
http://www.netlib.org/clapack/CLAPACK3-Windows.zip
下载此文件,你就什么都明白了。sba所缺的东西里面全都有。一共四个静态库,clapack.lib ,blas.lib,libF77.lib,libI77.lib。这四个库正是sba编译所缺的。将这四个库复制到sba目录下,再次nmake,就能编译成功了。就这么简单。。。。
引用链接:http://blog.csdn.net/royalvane/article/details/8125388
但是在Matlab下编译不成功
正在创建库 C:\DOCUME~1\SLLIN\LOCALS~1\TEMP\MEX_RW~1\templib.x 和对象 C:\DOCUME~1\SLLIN\LOCALS~1\TEMP\MEX_RW~1\templib.exp
sba.obj : error LNK2019: 无法解析的外部符号 _sba_motstr_levmar,该符号在函数 _mexFunction 中被引用
sba.obj : error LNK2019: 无法解析的外部符号 _sba_mot_levmar,该符号在函数 _mexFunction 中被引用
sba.obj : error LNK2019: 无法解析的外部符号 _sba_str_levmar,该符号在函数 _mexFunction 中被引用
sba.mexw32 : fatal error LNK1120: 3 个无法解析的外部命令
C:\PROGRA~1\MATLAB\R2010B\BIN\MEX.PL: Error: Link of 'sba.mexw32' failed.
不知道为什么,哪位高手能给解决一下啊