win7下VS2010与gsl1.8环境配置

来源:互联网 发布:淘宝客速成三部曲 编辑:程序博客网 时间:2024/05/02 12:12

一、下载gsl

1、从http://gnuwin32.sourceforge.net/packages/gsl.htm

下载Complete package, except sourcesSources两个exe文件。如下图所示:

二、安装

分别安装gsl-1.8.exe和gsl-1.8-src.exe。这里按照正常步骤做就可以了,就省略安装步骤的截图。我的安装路径是D:\Program Files\GnuWin32

三、环境配置

1、生成lib文件。发现安装目录lib下并没有libgsl.lib,libgslcblas.lib这两个文件,倒是有两个扩展名为defa(linux下库文件包格式)的文件,因此必须进行转换。这里要用VS带的CMD命令行去跑,不能用windows系统下的CMD。调用如下图所示:



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

可在lib文件下看到生成的lib库,如下所示:


2、设置环境变量,将D:\ProgramFiles\GnuWin32\bin添加到path中。

“包含目录”添加:D:\Program Files\GnuWin32\include D:\Program Files\GnuWin32\include\gsl

 “库目录”添加:D:\Program Files\GnuWin32\lib 

在“附加依赖库”添加libgsl_d.lib;libgslcblas_d.lib

基本上,环境已经配置完成,测试代码如下:

#include <iostream>#include <gsl_sf.h>int main(){       std::cout << gsl_sf_gamma_inc( 1.5, 0.5 ) << std::endl;       std::cout << gsl_sf_gamma_inc_Q( 1.5, 0.5 ) << std::endl;       std::cout << gsl_sf_gamma_inc_P( 1.5, 0.5 ) << std::endl;       std::cin.get();       return 0;}

测试通过,但是下列代码无法通过测试:

#include <iostream>#include <time.h>#include <gsl/gsl_rng.h>#include <gsl/gsl_randist.h>using namespace std;#define TRANS_S_STD 0.5int main(){gsl_rng* rng;gsl_rng_env_setup();rng = gsl_rng_alloc( gsl_rng_mt19937 );gsl_rng_set( rng, time(NULL) );double a=gsl_ran_gaussian( rng, TRANS_S_STD );cout<<a<<endl;}


解决方案,就是我们要在command line中添加 /D "GSL_DLL",如下图所示:


然后,上段代码编译通过。



0 0