双击gsl-1.8.exe文件
1、生成lib文件。发现安装目录lib下并没有libgsl.lib,libgslcblas.lib这两个文件,倒是有两个扩展名为def和a(linux下库文件包格式)的文件,因此必须进行转换。
l -> 开始菜单,点击运行,输入cmd。
进入gsl库的lib目录下依次输入以下两条语句:
lib /machine:i386 /def:libgsl.def
lib /machine:i386 /def:libgslcblas.def
{CMD下并不能运行lib.exe,所以必须采用以下的方法解决:(注意路径可能和安装的路径有问题)
在H:\Program Files\Microsoft Visual Studio 8\VC\bin里面有个lib.exe用拿生成lib,但默认是不能运行的,缺少几个文件
把H:\Program Files\Microsoft Visual Studio 8\Common7\IDE 里面的mspdb80.dll,mspdbcore.dll,mspdbsrv.exe,msobj80.dll
复制到上面的bin文件夹里.
把sqlite3.def也复制到BIN里
在CMD 里面运行H:\Program Files\Microsoft Visual Studio 8\VC\bin>LIB /MACHINE:IX86 /DEF:sqlite3
.def
}
再看lib目录下,发现有了libgsl.lib,libgslcblas.lib这两个文件。
2、将x:\Program Files\GnuWin32l\bin中的libgsl.dll和libgslcblas.dll复制到x:\VC98\Bin;将\include整个Gsl目录复制到x:\VC98\include下;\lib目录下的所有.lib文件全部复制到x:\VC98\Lib下。
3、新建一个工程用于测试,。然后在该项目的project-settings-link,在object/library modules中加入你用到的库文件,如libgsl.lib libgslcblas.lib,用空格隔开。
五、测试Gsl函数库
#define GSL_DLL #include <gsl/gsl_spline.h> #include <gsl/gsl_interp.h> #include <cstdio> #include <cstdlib> #include <cmath> #include <gl/glut.h> #include <gl/gl.h> #pragma comment(lib, "libgsl_dll_d.lib") #pragma comment(lib, "libgslcblas_dll_d.lib") #pragma comment(lib, "OpenGL32.lib") #pragma comment(lib, "Glut32.lib") void Display() { glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); const size_t n = 4; double x[] = {0,0.333336,0.666666,1}; double y[] = {0,0.5,0.9,0}; gsl_interp* interps[3] = {NULL,NULL,NULL}; interps[0] = gsl_interp_alloc(gsl_interp_linear,n); interps[1] = gsl_interp_alloc(gsl_interp_polynomial,n); interps[2] = gsl_interp_alloc(gsl_interp_cspline,n); gsl_interp_init(interps[0],x,y,n); gsl_interp_init(interps[1],x,y,n); gsl_interp_init(interps[2],x,y,n); gsl_interp_accel* acc = gsl_interp_accel_alloc(); glBegin(GL_LINE_STRIP); for(double t=0.0; t<=1.025; t+=0.025) { glColor3f(1,0,0); glVertex3f(t,gsl_interp_eval(interps[0],x,y,t,acc),0.0); } glEnd(); glBegin(GL_LINE_STRIP); for(double t=0.0; t<=1.025; t+=0.025) { glColor3f(0,1,0); glVertex3f(t,gsl_interp_eval(interps[1],x,y,t,acc),0.0); } glEnd(); glBegin(GL_LINE_STRIP); for(double t=0.0; t<=1.025; t+=0.025) { glColor3f(0,0,1); glVertex3f(t,gsl_interp_eval(interps[2],x,y,t,acc),0.0); } glEnd(); gsl_interp_accel_free(acc); gsl_interp_free(interps[0]); gsl_interp_free(interps[1]); gsl_interp_free(interps[2]); glutSwapBuffers(); } int main(int argc, char** argv) { glutInit(&argc,argv); glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGBA); glutInitWindowSize(512,512); glutCreateWindow("GSL Interpolation"); glutDisplayFunc(Display); glClearColor(1,1,1,1); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); glTranslatef(-1,-1,0); glScalef(2,2,1); glMatrixMode(GL_PROJECTION); glLoadIdentity(); glViewport(0,0,512,512); glLineWidth(4.0); glutMainLoop(); return 0; }
运行结果:
说明Gsl函数库已经可以使用了。