文档章节

最强数学库GSL(GNU Scientific Library) Qt环境下部署

尘中远
 尘中远
发布于 2016/05/12 23:53
字数 1102
阅读 29
收藏 0
点赞 2
评论 0

1.前言

GSL(GNU Scientific Library)是一个 C 写成的用于科学计算的库,有超过1000个函数,该库提供了关于数学计算的很多方面,Matlab的大部分函数几乎都能借助它实现,可以在数值计算中省却很多事情。关于GSL的详细功能。GSL的功能及相关头文件的介绍可以见此偏文章:http://blog.csdn.net/augusdi/article/details/8834182,或者看看这位仁兄的blog:http://www.cnblogs.com/Jedimaster/archive/2008/06/22/1227656.html , GSL说明文档的目录翻译见这里:http://blog.csdn.net/yruilin/article/details/3986844 ,大家在需要实现某个数学功能的时候,不妨先参考参考GSL。

GSL的在Windows平台下的配置有好多文章,像常用的vc6到vs2010,都有许多参考文章,这里就不一一罗列,大家谷歌或百度一下都可以找到,但是唯独没有Qt环境下的配置(至少我没看到),虽然Qt和vs下配置大同小异,但是为了方便各位,还是觉得有必要写一篇进行说明。

2.获取GSL

下载地址:http://gnuwin32.sourceforge.net/packages/gsl.htm

这个页面下有6个内容可以下载,省事直接下载第一个“Complete package, except sources”即可。不想安装包的可以下载“Binaries”和“Developer files”,这两个里面包含了编译好的dll以及.a和def文件(唯独没有lib~~)。如果此网被墙,可以见此文最后的附件。

无论怎么下载,gsl的目录都如下图所示:


我们将会用到“bin”目录下的dll,“lib”目录下的……def文件,(官方没有提供lib文件……),以及“include”目录下的头文件


3.生成lib文件

由于官方没有提供lib文件,因此需要自己生成,通过def文件生成lib文件的方法有很多,百度谷歌一大堆,这里还是说一下:

1. 开始菜单,点击运行,输入cmd

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


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


4.Qt环境下配置gsl

有dll,有lib,有头文件。万事具备,就差qmake了。

开发的过程中只需要用到“lib”目录下的libgsl.lib,libgslcblas.lib这两个lib文件,以及include目录下的头文件。运行时需要用到bin目录下的两个dll文件,为了程序开发的扩展性,我们可以直接在需要用到gsl的工程目录中新加gsl文件夹,在这个文件夹里把include文件夹和lib文件夹拷贝过去。


上图所示:在某工程里建立一个gsl文件夹,把include和lib文件拷贝到此文件夹下,此时结构如下:

project

|_gsl

|_include

| |_gsl

| |_头文件

|_lib

|_ libgsl.lib 、libgslcblas.lib

为了能导入include里的头文件需要在pro文件中如下写:

INCLUDEPATH += $$PWD\gsl\include
LIBS += -L$$PWD\gsl\lib -llibgsl
LIBS += -L$$PWD\gsl\lib -llibgslcblas
这样就可以使用GSL了,非常简单。但是,有些函数需要使用dll,因此,为了不带来不必要的麻烦,需要预定义宏GSL_DLL,因此上面的pro文件应该如下写:

DEFINES += GSL_DLL
INCLUDEPATH += $$PWD\gsl\include
LIBS += -L$$PWD\gsl\lib -llibgsl
LIBS += -L$$PWD\gsl\lib -llibgslcblas

这时就完全OK了。

可以试试下面的代码:

H:

#include <gsl/gsl_sf_bessel.h>
#include <math>
#include<iostream>

CPP:
int main()
{
 double x =5.0;
 double y =gsl_sf_bessel_J0 (x);
 cout<< "J0("<< x <<") = " << y<< endl;
 return0;
}

第一次运行,会直接崩溃,主要是dll没放到生成目录里,把dll放到对应的目录里,即可正常执行。


5. 编写GSL的PRI文件,简化部署步骤

得益于qmake,可以非常简单的组织项目结构。为了方便以后调用,我们可以写好一个gsl.pri文件放在gsl目录下,以后使用只需要include($$PWD/gsl/gsl.pri)即可。

DEFINES += GSL_DLL#此句不加将会遇到一些连接错误
INCLUDEPATH += $$PWD\include
DEPENDPATH += $$PWD
LIBS += -L$$PWD\lib -llibgsl
LIBS += -L$$PWD\lib -llibgslcblas


6.视频教程

下面是配置的视频教程:

通过此方法可以方便的配置很多库,顺带附送一个Qt下配置blitz++数学库的方法:

7.demo下载

下载demo(包括gsl必要的dll和lib文件): http://download.csdn.net/detail/czyt1988/7893997


© 著作权归作者所有

共有 人打赏支持
尘中远
粉丝 1
博文 26
码字总数 47436
作品 0
朝阳
程序员
GNU Scientific Library 2.0 发布

GNU Scientific Library 2.0 发布,值得关注的改进: 稀疏矩阵 正则化最小二乘 2D 插值 新的非线性最小二乘解 下载: src="http://ftp://ftp.gnu.org/gnu/gsl/gsl-2.0.tar.gz" href="http:/...

oschina
2015/11/02
2.8K
5
C 科学计算库--GSL

GNU Scientific Library (GSL) 是一个用于科学计算的 C 语言类库。有超过1000个函数。 该类库提供了关于数学计算的很多方面,包括: Complex Numbers Roots of Polynomials Special Functio...

匿名
2008/12/31
18.3K
0
C++ 类库资源

原文:C++ 类库资源 作者:Breaker C/C++ 开发库 | C/C++ Development Library 这里收集一些著名的 C/C++ 开发库、SDK、类库、可复用类与结构代码 等信息,列举它们的介绍、参考和网站链接,...

晨曦之光
2012/05/23
1K
0
GNU Octave 4.0 发布下载,数学软件包

GNU Octave 4.0 发布,此版本包括大量的新特性:全新图形化用户界面;支持 classdef 面向对象编程等等,更多内容请看 News 菜单下的发行说明。 此版本现已提供在 FTP 上:octave-4.0.00.zip...

oschina
2015/05/29
8.2K
6
GNU Octave 4.2 发布,数学软件包

GNU Octave 4.2 发布了,Octave 是一个类似 matlab 和 Scilab 的数学软件包,可以进行各种运算,编程。它还有丰富的 C++ 接口可以让用户编程时调用。它绘图使用 gnuplot。 Octave 的使用也是...

王练
2016/11/17
1K
1
(原创)Windows Vista编译Qtiplot0.9.7.14--附有Python脚本功能

这篇文章是应红薯兄的要求从我的百度空间转过来的,百度空间地址是:点击 经过4天的努力,我终于把QtiPlot0.9.7.14这个版本的软件编译成功了,在此时此刻与广大开源爱好者一起分享,同时感谢...

McArthur
2010/09/12
1K
8
C++资源大全

【原文】https://github.com/fffaraz/awesome-cpp 老外的Github上面是最新版,笔者这里补充了自己知道的一些工具库 关于 C++ 框架、库和资源的一些汇总列表,由 fffaraz发起和维护。 内容包括...

u012234115
2014/10/27
0
0
C/C++数值计算库mygsl v2.0发布

mygsl是一个基于GSL库的个性化开源数值计算项目. 该项目的目的是提高GSL库的易用性, 并致力于提升GSL库的计算效能. 该类库提供了关于数学计算的很多方面,包括: 该项目的目的在于提高GSL库的...

libzhouxi
2011/02/22
1K
3
C++开源库大全

C++开源库大全 程序员要站在巨人的肩膀上,C++拥有丰富的开源库,这里包括:标准库、Web应用框架、人工智能、数据库、图片处理、机器学习、日志、代码分析等。 标准库 C++ Standard Library...

元禛慎独
2016/10/15
125
0
C++ 资源大全

C++ 资源大全 http://www.uml.org.cn/c++/201411145.asp http://ezlippi.com/blog/2014/12/c-open-project.html 《C++ 并发编程指南》 关于 C++ 框架、库和资源的一些汇总列表,由 fffaraz发...

MtrS
2016/12/05
117
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Git 修改提交的用户名和邮箱名字

在通过git提交代码时,发现提交的用户名是自己mac的账户名,想要修改为其他名字和邮箱。 首先可以通过以下命令查看当前配置下的信息,包括用户名和邮箱: > git config --list 针对单项目的相...

edwardGe
8分钟前
0
0
Object.defineProperty()

Object.defineProperty(obj, props)方法直接在一个对象上定义新的属性或修改现有属性,并返回该对象。 obj 在其上定义或修改属性的对象 props 要定义其可枚举属性或修改的属性描述符的对象 ...

litCabbage
9分钟前
0
0
JEESZ分布式框架--单点登录集成方案(三)

多项目集成单点登录配置 当sso验证完成之后,客户端系统需要接收sso系统返回的结果时,需要定义一个过滤器获取返回结果,然后针对返回结果做相关处理.如果不需要做处理时,此处Filter也可以不...

明理萝
10分钟前
0
1
plisteditor 查看ipa包名及其它信息

1.下载ipa安装包 2.用rar等工具打开 3.将iTunesMetadata.plist文件解压出来 4.用plist Editor 工具打开 或http://www.atool.org/plist_reader.php在线反编译工具 5.在其中中找到softwareVer...

xiaogg
10分钟前
0
0
spring retry 小试

retry就是重试的意思,在我们的系统中,分布式或者是外部服务,存在其他服务异常,或者网络问题,需要我们重试的情况,但是重试可能还是错误的,总不能让系统一直报错,直到崩掉吧。所以熔断...

woshixin
13分钟前
0
0
【易错】一级缓存、二级缓存介绍与常见问题(四)

一般来说,可以在5个方面进行缓存的设计: 1.最底层可以配置的是mysql自带的query cache, 2.mybatis的一级缓存,默认情况下都处于开启状态,只能使用自带的PerpetualCache,无法配置第三方缓...

大白来袭
22分钟前
0
0
rancher安装kubernetes

参考https://rancher.com/quick-start/ 环境(必须相同。否则有很多问题): Ubuntu 16.04 Docker versions are 1.12.6, 1.13.1 or 17.03.2 1、docker安装https://docs.docker.com/install/l......

杰仪
23分钟前
0
0
几维安全Javascript代码混淆(js加密)在线使用说明

几维安全Javascript代码混淆是一项在线加密服务,用户只需将JS文件打包成zip包,提交到加密平台,即可完成代码混淆、字符串加密、属性加密、调用转换等多项保护措施,提高攻击者分析Javascr...

工作的事
25分钟前
1
0
解决dokuwiki创建中文词条文件乱码问题

若直接创建中文词条,打开本地文件夹\dokuwiki\data\pages你会发现,中文字段显示的是URL乱码,需要改一下utf8格式,方法如下:(linux系统亲测有效) 打开 .dokuwiki\conf\local.php 添加一行...

Rhymo-Wu
27分钟前
0
0
设置圆角长条progressbar背景色

1、首先在Drawable下面新建一个xml文件,将这段代码复制进去 <?xml version="1.0" encoding="utf-8"?><layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <!-......

王先森oO
27分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部