⑴ Cannot open include file: 'gsl/gsl_sf.h'
把gsl_sf.h放到VC98的include目录下得gsl目录试试
⑵ 求助:关于GNU Science Library(GSL)编程问题,总是提示缺少libgsl.dll
你可以从网上找到libgsl.dll这个文件,然后把它放到C:\Windows\system32里面试一试,因为你的程序可能会用到libgsl.dll里面的函数,但是你的系统里面没有这个动态链接库,所以会报错。
⑶ 如何编译Windows版本的GSL
GSL全名为GNU Scientific Library,是GNU发起的一个科学计算项目,采用C语言编写,可以在C/C++开发中广泛使用。因为是开源项目,在Windows平台下面没有现成的安装文件可供使用,一般需要自己编译这个项目。现在我把自己从网上找的资料和自己编译的经过汇总一下,写成这个教程。
在Windows平台上编译GSL主要使用MinGW和MSYS这两个工具,
(1)下载安装 MinGW(安装时选择gcc,g++和Make这三项)
(2)下载安装 MSYS
(3)下载MinGW Utilities 解压复制到MSYS安装目录
(4)下载解压gsl源码,
(5)进入gsl目录,执行命令:
./configure
make
make install
(6)完成编译之后,在MSYS安装目录下的
local/bin有编译了的gsl动态库文件libgsl-0.dll libgslcblas-0.dll
local/lib有编译好了的静态库文件libgsl.a libgsl.dll.a libgslcblas.a libgslcblas.dll.a
local/include有编程需要的gsl头文件
(7)此时你会发现,编译的结果缺少lib文件,现在我们来生成lib文件
cd /usr/local/bin
pexports libgsl-0.dll >libgsl-0.def
pexports libgslcblas-0.dll >libgslcblas-0.def
这时候就生产了两个def文件
(8)使用VC6或以上版本的lib命令,生成lib文件,具体如下:
lib /machine:i386 /def:libgsl-0.def
lib /machine:i386 /def:libgslcblas-0.def
(9)动态链接库拷贝到系统的Windows文件夹下面;
将gsl头文件(local/include里面的gsl目录)拷贝到include文件夹下面;
lib文件和*.a文件(local/lib下面)放到Lib文件夹下面,
编译器tools-options-directories添加Lib路径和Include路径
最后一步就是在VC6的工程设置中的object/library moles里面添加以下内容:
libgslcblas-0.lib libgsl-0.lib
至此,整个gsl的移植工作就完成了。
⑷ 怎样把GSL链接到自己的编译环境中
如果你用到了矩阵等函数,这还不够,还得再加上-lgslcblas,连入线性代数库。于是单个文件编译,我一般用这条命令:
gcc -g -Wall -std=c99 source.c -o program -lgsl -lgslcblas -lm -O3
source.c 和 program 代换成合适的名字。
⑸ 打开GSL比赛地图出现的错误问题,求帮助
这一句声明和定义都做了,在程序之前加int i定义,在c文件的程序之前必须加上int i进行定义,再在某一个你要调用该变量的c文件的程序之前再定义(注意第一个调用的c文件要负责附带初始化该变量。
对于大一点的程序。extern int i=0,有很多c文件和头文件。如果在头文件中定义。如果只有头文件中声明就会出现没有定义有警告。如果要在头文件中定义有以下两种方法,怎么能是没注册呢,则编译的时候会出现重复定义的错误。
*** ERROR L104: MULTIPLE PUBLIC DEFINITIONS
SYMBOL!;这一句只是对变量i进行声明,把你的头文件中的变量定义前加extern(只是变量声明不用初始化).obj (222)
出现上述错误则是因为变量k重复定义!
对于比较小的程序,然后在一个c文件中定义(该初始化的要初始化),一般只有一个c文件和一个头文件:用extern来声明这个问题分别是重复定义了么: K
MODULE:extern int i,这个时候全局变量就必须在头文件中声明(不需要初始化),全局变量我们通常会直接定义在c文件中!: 222