`
chinamming
  • 浏览: 151309 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

windows 环境下使用GSL

 
阅读更多

GNU Scientific Library(GSL)是一个为C和C++程序员提供的科学数值运算库。该科学计算库异常强大,提供了如下方面的支持:
Complex Numbers Roots of Polynomials Special Functions
Vectors and Matrices Permutations Sorting
BLAS Support Linear Algebra Eigensystems
Fast Fourier Transforms Quadrature Random Numbers
Quasi-Random Sequences Random Distributions Statistics
Histograms N-Tuples Monte Carlo Integration
Simulated Annealing Differential Equations Interpolation
Numerical Differentiation Chebyshev Approximation Series Acceleration
Discrete Hankel Transforms Root-Finding Minimization
Least-Squares Fitting Physical Constants IEEE Floating-Point
Discrete Wavelet Transforms Basis splines

对于经常处理复杂数学计算的开发人员来说,无疑是莫大的解脱~
该项目的主页是:http://www.gnu.org/software/gsl/gsl.html
遗憾的是GSL不支持windows平台,不过所幸的是有人做了GSL在windows上的移植工作,名唤WinGSLhttp://www6.in.tum.de/~kiss/WinGsl.htm),虽然版本比较老,只更新到04年,但对于一般人来说,还是足够了。
之前写过一点计算机视觉方面的程序,涉及到矩阵运算都通过VC调用matlab计算引擎来处理。虽然比较方便,但是前提是要安装matlab,并且调用计算引擎进行数据交换的速度也不快。这次数据挖掘作业,会设计到一些矩阵分解,特征值求解之类的运算,为了偷懒,决定试用一下WinGSL。

在VC6.0下配置WinGSL极为简单:
1.http://www6.in.tum.de/~kiss/WinGsl.htm下载最新的WinGSL(当前是1.4版),解压到某个目录,假设为D:WinGSL
2.将WinGSL使用的lib和头文件加入vc6的设置:
vc6.0->tools->options->directories
将D:WinGSLlib,D:WinGSL分别加入到库文件和头文件的搜索路径中。
3.将WinGsl.dll和WinGslD.dll复制到%VC_HOME%/VC98Bin下,或者是复制到新建的VC6工程的主目录下。
4.在新建的工程中将要使用的库加入到连接器中:
vc6.0->project->settings->link->object/library modules。
配置完毕后测试如下代码:

#include <stdio.h>
#include <gsl/gsl_linalg.h>
int
main (void)
{
  double a_data[] = { 0.18, 0.60, 0.57, 0.96,
                      0.41, 0.24, 0.99, 0.58,
                      0.14, 0.30, 0.97, 0.66,
                      0.51, 0.13, 0.19, 0.85 };
  double b_data[] = { 1.0, 2.0, 3.0, 4.0 };
  gsl_matrix_view m
    = gsl_matrix_view_array (a_data, 4, 4);
  gsl_vector_view b
    = gsl_vector_view_array (b_data, 4);
  gsl_vector *x = gsl_vector_alloc (4);
  int s;
  gsl_permutation * p = gsl_permutation_alloc (4);
  gsl_linalg_LU_decomp (&m.matrix, p, &s);
  gsl_linalg_LU_solve (&m.matrix, p, &b.vector, x);
  printf ("x = ");
  gsl_vector_fprintf (stdout, x, "%g");
  gsl_permutation_free (p);
  gsl_vector_free (x);
  return 0;
}

编译,链接通过,说明配置成功。但是运行结果居然出错!

这可是GSL网站上的标准示例…

debug了一下,发现x计算正确,但是调用 gsl_vector_fprintf (pf, x, “%g”);时即出错…

汗~~
于是重新google了一下,发现sourceforge上还有个GnuWin32,专门移植负责GNU的项目到win32平台。自然也包括了GSL for windows移植版,当前版是1.8,比WinGSL要新一些,可以再这里下载: http://gnuwin32.sourceforge.net/packages/gsl.htm

于是乎高高兴兴的down了下来,类似的重新配置了一遍,运行上述程序,结果…

可以正确的输出结果,但是冒出个debug错误~~程序结束时chkesp检查ESP指针时发现不一致…汗~~~

PS:由于VC6.0对模板的支持不好,尤其是不支持模板类的声明和定义分开,所以很多以模板编写的库都无法在VC6.0下使用,例如Blitz++和MTL
GSL for windows 1.8带的库文件是.a文件,不是windows下常见的.lib格式,因此可以用vc6自带的lib工具根据.def模块定义文件生成.lib文件:

lib.exe /machine:i386 /def:libgsl.def

lib.exe /machine:i386 /def:libgslcblas.def

若提示找不到mspdb60.dll,则复制一份mspdb60.dll到C:WINDOWSsystem32或者%VC_HOME%VC98Bin目录下即可。一般说来,mspdb60.dll在%VC_HOME%CommonMSDev98Bin下面可以找到,若也没有,则从网上down一个即可。
若要使用动态链接库,则需要在VC的预编译器定义中加入GSL_DLL:
vc6.0->project->settings->C/C++->Preprocessor definitions

然后将GSL的BIN目录下的libgslcblas.dll、libgsl.dll拷贝到C:WINDOWSsystem32目录下即可。

下载GSL最新版1.12,在Uubuntu 8.10上测试上述程序通过。
重新试验了一下GSL for windows 1.8。最上面的代码可以编译,但运行时仍然出错,但是用gsl官网上的一个最简单sample却可正确编译运行。这说明不是环境配置的问题,是该GSL for windows 1.8自身的问题。可能是版本过低,可能是由于导出库函数的接口不一致等原因导致在windows下不稳定。

最后,强烈建议直接在linux下使用最新版的gsl。

分享到:
评论

相关推荐

    gsl-1.13-windows-binaries.zip

    这个压缩包包含预编译的库文件,使得用户无需自己编译源代码就能在Windows环境下使用GSL。 描述中提到"免安装GSL库",这意味着下载这个压缩包后,用户可以直接解压并引用其中的文件,而无需通过传统安装程序来设置...

    VS2010下GSL的配置.

    ### VS2010下GSL的配置详解 #### 一、引言 GNU Scientific Library (GSL) 是一个广泛使用的C语言科学计算库,它提供了大量的数学例程,包括线性代数...希望本文能为需要在Windows环境下使用GSL的读者提供一定的指导。

    gsl-1.15 VC2010

    综上所述,"gsl-1.15 VC2010"提供了在Windows环境下使用GSL进行科学计算的基础。开发者可以利用提供的编译环境和源代码,结合Visual Studio 2010的强大功能,实现高效且精确的数值计算。同时,通过深入理解并利用...

    【QGIS跨平台编译】之【gsl跨平台编译】:Windows环境下编译成果(支撑QGIS跨平台编译,以及二次研发)

    在Windows环境下使用。 既可以支撑QGIS在Windows环境下的编译工作,也可以进行gsl的二次研发。 四、其他说明 在Windows环境下,基于Qt Creator进行编译的gsl开源库。包含有头文件include、库文件lib、动态库dll等,...

    gsl配置文件

    了解并掌握这些步骤后,你就能顺利地在Windows环境下使用GSL进行科学计算。这个过程可能需要一定的耐心和对编译链接过程的理解,但是一旦设置好,GSL的强大功能将极大地提升你的代码计算能力。记住,对于任何问题,...

    GSL数学库在Qt环境下搭建教程

    此文件是Qt环境下GSL的部署方法,内部已经附带gsl的dll和lib文件,以及写好的pri文件,直接调用。 GSL(GNU Scientific Library)是一个 C 写成的用于科学计算的库,有超过1000个函数,该库提供了关于数学计算的很多...

    GSL C/C++ windows 安装资源和配置说明

    总的来说,GSL在Windows上的安装和配置虽然比在Linux上复杂一些,但通过遵循上述步骤,开发者可以成功地在VC++ 2010环境下使用GSL进行科学计算。理解GSL的基本结构和调用方式,以及熟悉Windows下的环境变量和项目...

    gsl for windows

    关于MinGW,这是一个轻量级的GCC(GNU Compiler Collection)移植,可以在Windows环境下编译原生的Win32程序。由于MinGW也是基于C编译器,因此同样可以使用GSL库。配置MinGW时,同样需要设置好头文件和库文件的路径...

    WindowsVS2019环境下C++编译GSL库动态库静态库

    我想做一个最小二乘法正太拟合曲线,网上都是python调用matlab进行拟合,我想用C++拟合曲线,发现网上有开源库GSL也有计算方法;这工程就是用VS2019编译的GSL动态库,测试项目中包括GSL生成的动态库静态库。

    GSL安装使用教程

    要注意的是,上述教程是在Windows操作系统环境下进行的,GSL官方提供的GNUWin32版是为Windows平台准备的,它提供了可执行文件和源代码包,方便用户根据自己的需要进行编译和安装。GSL的源码包还允许用户在Linux、...

    GSL_windows_x64

    本文将详细介绍如何在Windows 64位环境下,特别是在VS2012集成开发环境中,安装和使用GSL库。 首先,GSL的下载和安装是一个关键步骤。标题中的“GSL_windows_x64”表示这是专为Windows 64位系统编译的版本,确保了...

    windows下gsl动态库

    在Windows环境下,GSL(GNU Scientific Library)动态库是一个至关重要的工具,它为科学计算提供了广泛的功能。GSL是一个开源的数学和物理函数库,包含了众多的数值算法,包括线性代数、微积分、随机数生成、插值、...

    GSL--Windows版

    Windows版的GSL是将原生的GSL源代码编译适应于Windows操作系统,特别为在Visual C++ 6.0环境下使用而准备的。这个版本使得开发者在Windows平台上也能方便地利用GSL的强大功能进行科学计算。 1. GSL库概述:GSL是一...

    windows下gsl2.6动态库

    在Windows环境下安装和使用GSL 2.6动态库是许多科研人员和开发者进行科学计算时的常见需求。 GSL 2.6是该库的一个版本,它可能包含了比早期版本更多的优化和新功能。动态库,通常以.dll文件的形式存在,是在运行时...

    gsl-1.15 for windows

    描述中提到,这个压缩包包含了编译好的.gsl-1.15版本,适用于Windows环境,特别适合那些使用Visual Studio(如VS2010)或MinGW进行开发的用户。这里提供的.lib和.dll文件是静态和动态链接库,它们使得开发者能够在...

    gsl for windows 32&64 by VS compiler project

    标签中的“gsl windows VS2010”强调了GSL库与Windows操作系统和VS2010编译器的关联,意味着这个项目特别关注于在Windows环境下使用Visual Studio 2010来构建GSL库。 压缩包子文件“gsl for windows”很可能包含了...

    gsl1.8用于windows最新版

    标题中的"用于windows最新版"指的是GSL的1.8版本,这是一个专为Windows平台优化的版本,包含了所有必要的组件,使得开发者可以在Windows环境下,无论是使用Visual Studio 2010还是MinGW编译器,都能方便地进行科学...

    windows下64位GSL库2.7版本,仅包含编译好的dll文件和lib文件。

    在Windows操作系统中,开发科学计算应用时,常常需要使用到GNU Scientific Library (GSL)。GSL是一个开源的数学库,提供了广泛的数值算法,涵盖了线性代数、微积分、随机数生成、特殊函数等多个领域。这个压缩包提供...

    GSL库 V2.4 for Windows

    这意味着Windows用户可以直接使用这些预编译的库文件,而无需自行配置编译环境。这对于不熟悉编译过程或者没有适当编译工具的用户来说,是一个极大的便利。通常,这个压缩包会包含动态链接库(.dll)和静态链接库(....

    gsl程序不需配置

    GnuWin32是一个项目,旨在将GNU工具集移植到Windows操作系统上,使得开发者可以在Windows环境下使用类似于Unix的开发工具。在这个项目中,GSL库已经被预先编译为适合Windows的二进制格式,包括.dll动态链接库和.lib...

Global site tag (gtag.js) - Google Analytics