vs2010 编译 levmar 2.6,(Levenberg-Marquardt)

LM算法是非线性最小二乘解方程的最常用的算法。以前在稀疏区域网平差中见过,因此对LM很熟,自己编写的最小二乘算法不能很快的收敛(就是编程太菜了。。。。),决定采用LM的库,用VS2010编译了一把。



下载clapack,LM库

LM官网,下载 levmar-2.6
clapack库,解压后/LIB文件夹中有预先编译好的lib文件,最好自己打开vs工程编译生成lib文件。具体在这里
将libf2c.lib,tmglib.lib,BLAS.lib,clapack.lib 放在文件夹lib里面,libf2c.lib,改名为f2c.lib。


cmake生成vs工程

我使用预先编译好的lib文件,用camke配置vs工程,具体配置如下图:

这里写图片描述

红框里面是配置lib的路径,填写文件夹lib的路径。

打开生成的vs工程,配置lmdemo工程,在属性链接器的输入里面忽略特定默认库这一项填写libcmt.lib

到此配置完成,生成一把结果有错误,报错如下:

2>levmar.lib(misc.obj) : error LNK2019: 无法解析的外部符号 sgemm_,该符号在函数 slevmar_trans_mat_mat_mult 中被引用
2>levmar.lib(misc.obj) : error LNK2019: 无法解析的外部符号 dgemm_,该符号在函数 dlevmar_trans_mat_mat_mult 中被引用
2>D:\BA\ba_code\code_internet\LM_code\levmar-2.6\levmar-2.6\Release\lmdemo.exe : fatal error LNK1120: 2 个无法解析的外部命令

原先我以为是预先编译的lib有问题,自己编译了一遍还是同样的问题,后来发现需要#include “blaswrap.h”,在levmar工程中,打开misc.c文件,在最开始添加#include “blaswrap.h”,
在levmar工程的包含库目录里面包含clapack的 INCLUDE文件夹(在解压后的clapack库里面)
再生成一把,搞定。将Imdemo设为启动项目,运行成功。

这里写图片描述

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值