回 帖 发 新 帖 刷新版面

主题:[求助]关于IVF从32位到64位的库函调用问题!

在编程过程中,把程序从32位转到64位的机器上调试,编译,连接都没问题,但是在32位调用MKL中‘dpbtrf’ 没有问题,可以正常计算,在64位的时候,运行到这里就会出现“forrtl" severe(157): program exception- access violation”.在网上找了好多的方法,都没找到原因。谢谢!

回复列表 (共4个回复)

沙发

这很可能是数组越界、动态数组未分配等问题,具体看看
http://fcode.cn/guide-36-1.html

板凳

      SUBROUTINE DEM_KBB_gaojie(NEQUA,KFIXA,AKb,MBAND
     .                         ,FACT,AKib,AKbi,AKbb)
C***********************************************
C
      USE CONSTANT
      IMPLICIT DOUBLE PRECISION(A-H,O-Z)
C
      DIMENSION AKb(KFIXA,KFIXA)
      DIMENSION AKbb(KFIXA,KFIXA),AKib(NEQUA,KFIXA),AKbi(KFIXA,NEQUA)
     .         ,FACT(MBAND,NEQUA)
C
      call dpbtrf('U',NEQUA,MBAND-1,FACT,MBAND,info)
      call dpbtrs('U',NEQUA,MBAND-1,KFIXA,FACT,MBAND,AKib,NEQUA,info)
      call MULTI(AKbi,AKib,KFIXA,NEQUA,KFIXA,AKb)
C
      AKb=AKbb-AKb
C
      RETURN
      END


上面就是所调用的子程序,在32位系统下,运行没有问题的,在64位下编译 链接也都没什么错误,就是在运行到这里时候报错,我想,应该不是我的数组分配问题吧。

3 楼

调试的时候一般会给出错误信息,比如出错行号、数组名等。

4 楼

出错的地方就在call dpbtrf('U',NEQUA,MBAND-1,FACT,MBAND,info),其错误就是上面所说。32位的时候,计算没问题,64为,运行到这里就不行了,过不去了,这个是MKL库函数,看不到错误信息

我来回复

您尚未登录,请登录后再回复。点此登录或注册