使用GNU Scientific Library(GSL)及GSL的配置(转自彭军)

2009年05月26日 12:45

作者:彭军

邮件:hellotim##foxmail.com

近来帮朋友编译一个SIFT匹配的程序,可是里面不仅用到了OpenCV,而且用到了GSL,但是在编译的过程中,OpenCV的配置是没有什么问题了,可是GSL一直不行,在用VC6.0进行编译的时候,总是出现类似与如下的错误:

xform.obj : error LNK2001: unresolved external symbol _gsl_rng_free
xform.obj : error LNK2001: unresolved external symbol _gsl_rng_set
xform.obj : error LNK2001: unresolved external symbol _gsl_rng_alloc
xform.obj : error LNK2001: unresolved external symbol _gsl_rng_mt19937
xform.obj : error LNK2001: unresolved external symbol _gsl_sf_choose
xform.obj : error LNK2001: unresolved external symbol _gsl_rng_uniform_int

一想既然是LINK时的错误,肯定是lib文件有关系了。看到GSL的lib文件夹下面并没有后缀名为lib的文件。但是又看到有后缀名为def的文件,我知道通过def文件是可以导出dll和lib文件的了。而且在网络上也看到可以用VS的lib命令来导出适合VS用的.lib文件,于是打开cmd窗口。

D:/Program Files/GnuWin32/lib>lib /machine:i386 /def:libgsl.def
Microsoft (R) Library Manager Version 6.00.8168
Copyright (C) Microsoft Corp 1992-1998. All rights reserved.

   Creating library libgsl.lib and object libgsl.exp

D:/Program Files/GnuWin32/lib>lib /machine:i386 /def:libgslcblas.def
Microsoft (R) Library Manager Version 6.00.8168
Copyright (C) Microsoft Corp 1992-1998. All rights reserved.

   Creating library libgslcblas.lib and object libgslcblas.exp

D:/Program Files/GnuWin32/lib>

可以看到lib文件夹下已经有了libgsl.lib和libgslcblas.lib这样的话,我们只要将这两个lib文件添加到工程Link页中就可以了,如下:

当然了,要用GSL的话,也需要在VC的目录中添加GSL的include目录、lib目录和bin目录,如下:

从添加的Include目录可以看出,当你用GSL里面的头文件时,需要类似与这样的引用:

#include <gsl/gsl_rng.h>

当然,如果你在添加Include目录是添加的是:D:/Program Files/GnuWin32/include/gsl

那么就不需要前面的gsl,只要如此引用就可以了:#include <gsl_rng.h>

还有一点需要说明的是GSL中已经没有gsl_rng_free.h了,所以你需将其改为gsl_rng.h

你可以在这里下载这个经典SIFT的图像匹配程序的VC程序:

http://download.csdn.net/source/1352136

你可以在这里下载GSL(GNU Scientific Library)1.8:

http://download.csdn.net/source/1352070

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值