Fortran Coder

标题: fortran-IMSL 90格式调用问题 [打印本页]

作者: 小子wx    时间: 2015-8-31 14:59
标题: fortran-IMSL 90格式调用问题
我现在在用Intel Parallel Studio XE 2013+VS2010+IMSL7.0。但是在使用时发现调用IMSL函数库时只能利用F77格式调用,不能用90格式应用,这个是怎么回事。
调用时用的是:
include 'link_fnl_shared.h'
use numerical_libraries



作者: fcode    时间: 2015-8-31 19:08
最好给出你的代码(尽量简短,删除不必要的内容),及错误提示(原文,英文,不翻译)
作者: 小子wx    时间: 2015-9-1 14:59
代码如下:
[Fortran] 纯文本查看 复制代码
program main
    use numerical_libraries
    include 'link_fnl_shared.h'
    implicit none
    integer,parameter::DP=4
    real(kind=DP)::A(3,3)=(/1,3,2, &
                            1,2,1,&
                            2,1,3 /)
    real(kind=DP)::B(3,1)=(/4,6,6/)
    real(kind=DP)::X(3,1)
   
    x= A .x. B
    write(*,*)x
end

错误提示如下:
error #6866: Dotted string neither a defined operator nor a structure component   [X]
作者: fcode    时间: 2015-9-1 15:04
use linear_operators
作者: 小子wx    时间: 2015-9-1 17:07
还是错的
[Fortran] 纯文本查看 复制代码
program main
    use linear_operators
    include 'link_fnl_shared.h'
    implicit none
    integer,parameter::DP=4
    real(kind=DP)::A(3,3)=(/1,3,2, &
                            1,2,1,&
                            2,1,3 /)
    real(kind=DP)::B(3,1)=(/4,6,6/)
    real(kind=DP)::X(3,1)
   
    x= A .x. B
    write(*,*)x
end

错误提示是
internal error: Please visit 'http://www.intel.com/software/products/support' for assistance.
1>    x= A .x. B
1>^
1>[ Aborting due to internal error. ]
作者: fcode    时间: 2015-9-1 17:18
这就属于IMSL和ivf的配置问题了。检查一下IMSL的版本(32位?64位)与IVF的版本(32位?64位),是否匹配?是否选择了合适位数的工程配置?


QQ截图20150901172026.jpg (159.29 KB, 下载次数: 0)

QQ截图20150901172026.jpg

作者: 小子wx    时间: 2015-9-1 18:19
你用的什么版本的intel fortran, VS 以及IMSL,  我刚刚看了下IMSL的说明文件,上边说只支持IVF11.1+VS2005/2008,   会不会是因为版本的问题
作者: fcode    时间: 2015-9-1 19:29
我说的版本,主要指32还是64位
作者: 小子wx    时间: 2015-9-2 15:13
fcode 发表于 2015-9-1 19:29
我说的版本,主要指32还是64位

我知道是32还是64的意思   我试过了  其他的都可以调用,比如一下的程序
[Fortran] 纯文本查看 复制代码
program main
    !use linear_operators
    use Lin_sol_gen_int
    include 'link_fnl_shared.h'
    implicit none
    integer,parameter::DP=4
    real(kind=DP)::A(3,3)=(/1,3,2, &
                            1,2,1,&
                            2,1,3 /)
    real(kind=DP)::B(3,1)=(/4,6,6/)
    real(kind=DP)::x(3,1)
   
    !x= A .x. B
    call lin_sol_gen(a,b,x)
    write(*,*)x
end

就可以运行,但是还是无法使用符号运算,只要程序加上use linear_operators就会出错
作者: fcode    时间: 2015-9-2 15:25
so,你的无法运行,但别人可以,一样的代码,一样的版本,一样的设置,而且不用操作符就可以,这个问题恐怕需要 intel 公司来回答




欢迎光临 Fortran Coder (http://bbs.fcode.cn/) Powered by Discuz! X3.2