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 }