搜索
您的当前位置:首页正文

IMSL使用说明

来源:六九路网
Visual Studio 2008中配置IMSL库

IMSL是Fortran语言的一个非常好用的线性代数库,调用及使用非常方便,现在 IVF 也是支持它的。Intel Visual Fortran下虽然调用命令与CVF不同,但是大同小异。由于CVF逐渐退出历史舞台,而IVF才是未来的方向,而有的老的程序有可能是在CVF下编写的,改写到IVF的环境是必须的。下面来介绍一下IVF下IMSL的安装及调用方法。 1. 下载IMSL 2. 安装它,安装时输入201111,这个序列号4,还需要license文件,是license.lic,而安装破解包里的是license.dat,修改文件名后缀即可;特别注意,需要把license.lic文件拷贝至…\\VNI\\License\\bin目录下,否则运行时会出错。 3. 在Visual Studio中对IMSL运行库进行配置:工具->选项Libraries:C:\\Program Files\\VNI\\imsl\\fnl600\\IA32\\lib;将IMSL运行库添加到编译系统的搜索目录; Includes:C:\\Program Files\\VNI\\imsl\\fnl600\\IA32\\include\\dll;将头文件加入到编译系统的搜索目录。

4. 调用命令的选取, 在Visual Studio的help 中找到IMSL的选项,using from command line 与 using from ide 在后者中会有介绍在不同的编译环境中的调用方式,而网上说的都不一定正确。因为随着IDE版本的升高,会有不同的语句。

5. 自己编个程序测试一下,网上流传的一个简单的测试例子:

! ================ Program start ============== program fnl

! Include the necessary header file: ! For the dynamic library: ! INCLUDE 'link_fnl_shared.h' ! For the static library: INCLUDE 'link_fnl_static.h'

!DEC$ OBJCOMMENT lib:\"libguide.lib\"

! Declare which IMSL functions will be used USE LSARG_INT USE WRRRN_INT

! Declare variables PARAMETER (LDA=3, N=3)

REAL A(LDA,LDA), B(N), X(N) !

! Set values for A and B ! A = (33.0 16.0 72.0) ! (-24.0 -10.0 -57.0) ! (18.0 -11.0 7.0)

! B = (129.0 -96.0 8.5) !

DATA A/33.0, -24.0, 18.0, 16.0, -10.0, -11.0, 72.0, -57.0, 7.0/ DATA B/129.0, -96.0, 8.5/ !

! The main IMSL function call to solve for x in Ax=B.

! This is the floating point version, to use double-precision, call DLSARG. !

CALL LSARG(A,B,X)

!

! Now print the solution x using WRRRN, a printing utility !

CALL WRRRN('X',X,1,N,1) ! Read(*,*)

END PROGRAM fnl

!================ Program End ==============

6. 如果是从CVF的平台上移植过来的源代码,有可能在编译的时候出现 link 库出现问题的情况,如libcmt.lib,msvcrtd.lib与默认库冲突,此时将其从默认的库中移除,即在命令行下,输入/default libcmt.lib即可。

Tips:

1. 四个警告信息如下:

1. 1>LIBCMTD.lib(crt0init.obj) : warning LNK4098: 默认库“libcmt.lib”与其他库的使用冲突;请使

用/NODEFAULTLIB:library

2. 1>libFNPload.lib(ActPublicInterface.obj) : warning LNK4099: 未找到

PDB“libfnpload.lib.pdb”(使用“C:\\Program Files (x86)\\VNI\\imsl\\fnl600\\Intel64\\lib\\libFNPload.lib”或在

“E:\\Work\\Fortran_x64\\Seepage_RAS\\Seepage_RAS\\x64\\Debug\\libfnpload.lib.pdb”中寻找);正在链接对象,如同没有调试信息一样

3. 1>libFNPload.lib(FlexlmCICO.obj) : warning LNK4099: 未找到PDB“libfnpload.lib.pdb”(使用

“C:\\Program Files (x86)\\VNI\\imsl\\fnl600\\Intel64\\lib\\libFNPload.lib”或在

“E:\\Work\\Fortran_x64\\Seepage_RAS\\Seepage_RAS\\x64\\Debug\\libfnpload.lib.pdb”中寻找);正在链接对象,如同没有调试信息一样

4. 1>libFNPload.lib(FNPload.obj) : warning LNK4099: 未找到PDB“libfnpload.lib.pdb”(使用

“C:\\Program Files (x86)\\VNI\\imsl\\fnl600\\Intel64\\lib\\libFNPload.lib”或在

“E:\\Work\\Fortran_x64\\Seepage_RAS\\Seepage_RAS\\x64\\Debug\\libfnpload.lib.pdb”中寻找);正在链接对象,如同没有调试信息一样

此时,在工具à选项àdefault option中加入:/default libcmtD.lib,将LIBCMTD.lib从库中移除即可。

因篇幅问题不能全部显示,请点此查看更多更全内容

Top