windows下GSL的配置

一、GSL的下载、安装

  下载地址:http://gnuwin32.sourceforge.net/packages/gsl.htm 下载 Complete package, except sources和Sources两个exe文件

  安装从下载的两个文件gsl-1.8.exe和gsl-1.8-src.exe,如我的安装在:D:\GSL\ 目录下:
  

 

二、设置编译环境

(1)对于VS2010:

 1、生成lib文件。发现安装目录lib下并没有libgsl.lib,libgslcblas.lib这两个文件,倒是有两个扩展名为def和a(linux下库文件包格式)的文件,因此必须进行转换。

  开始菜单,要用VS带的CMD命令行去跑,不能用windows系统下的CMD!!!

  进入gsl库的lib目录下依次输入以下两条语句:
    lib /machine:i386 /def:libgsl.def
    lib /machine:i386 /def:libgslcblas.def

再看lib目录下,发现有了libgsl.lib,libgslcblas.lib这两个文件。

 2、

方式一(不推荐)

将..\GnuWin32l\bin中的libgsl.dll和libgslcblas.dll复制到D:\Program Files\Microsoft Visual Studio 10.0\VC\Bin;将\include整个Gsl目录复制到D:\Program Files\Microsoft Visual Studio 10.0\VC\include下;\lib目录下的所有.lib文件全部复制到D:\Program Files\Microsoft Visual Studio 10.0\VC\Lib下。

(如果这样添加了其实下面指定的前两个都不需要,因为在系统中已经有了这些文件,但不建议按这种方法指定,这样会使系统VC库中的东西非常混乱,强烈建议使用下面这种指定路径的方法!!)

 

方式二(推荐)

 

在Project -> tracking-> Configuration Properties -> C/C++ -> General -> Additional Include Directories 中增加头文件路径。

在Project -> tracking -> Configuration Properties -> C/C++ -> General -> Additional Library Directories 中增加库文件路径。

在Project -> tracking  -> Configuration Properties -> Linker -> Input -> Additional Dependencies 中增加所依赖的库文件libgsl.lib和libgslcblas.lib。

 

重要tips:需要在c/c++的command line里添加  /D "GSL_DLL"

 (注:Project -> tracking  -> Configuration Properties ->C/C++->Command line)

 

 

(2) 对于VC6:

  生成lib文件:发现安装目录lib下并没有libgsl.lib,libgslcblas.lib这两个文件,倒是有两个扩展名为def和a(linux下库文件包格式)的文件,因此必须进行转换。

    这里可以直接用windows命令行,在命令行中切换到D:\GSL\GnuWin32\lib

    lib /machine:i386 /def:libgsl.def

    lib /machine:i386 /def:libgslcblas.def

    运行以上命令后再看lib目录下,发现有了libgsl.lib,libgslcblas.lib这两个文件,这就对了,进入下一步。

    将D:\GSL\GnuWin32\bin中的libgsl.dll和libgslcblas.dll复制到..\VC\Bin下;

    将D:\GSL\GnuWin32\include目录下的整个gsl文件夹拷贝到..\VC\include下;

    将D:\GSL\GnuWin32\lib目录下的所有.lib文件全部复制到..\VC98\Lib下。

    新建一个VC6工程用于测试,然后进入项目->属性->连接器->输入,在“附加依赖项”一栏加入库文件 libgsl.lib libgslcblas.lib,用空格隔开,并在

  Project setting->C++->Project Options加入/D "GSL_DLL",并点击OK

 

三、测试用例

 1 #include <gsl/gsl_spline.h>
 2 #include <cstdio>
 3 #include <cstdlib>
 4 #include <cmath>
 5 
 6 void Display()
 7 {
 8      const size_t n = 4;
 9      double x[] =  {0,0.333336,0.666666,1};
10      double y[] =  {0,0.5,0.9,0};
11      gsl_interp* interps[3] =  {NULL,NULL,NULL};
12      interps[0] = gsl_interp_alloc(gsl_interp_linear,n);
13      interps[1] = gsl_interp_alloc(gsl_interp_polynomial,n);
14      interps[2] = gsl_interp_alloc(gsl_interp_cspline,n);
15      gsl_interp_init(interps[0],x,y,n);
16      gsl_interp_init(interps[1],x,y,n);
17      gsl_interp_init(interps[2],x,y,n);
18      gsl_interp_accel* acc = gsl_interp_accel_alloc();
19 }
20 
21 int main(int argc, char** argv)
22 
23 {
24      Display();
25      return 0;
26 
27 }

 

 

 

posted @ 2012-04-26 18:37  Moondark  阅读(12006)  评论(20编辑  收藏  举报