我开始使用mex设置从matlab调用fortran文件。我想要做的是在m文件中调用fortran子例程。从我读过的内容来看,我需要运行:
mex filename.f90
但是,当我这样做时,我会收到许多类型的错误消息:
error #5149: Illegal
character in statement label field [s]
但是,我使用的.f90文件应该是正确的(我是从其他来源获得的)。以下是fortran文件的第一个起始行:
subroutine mexFunction(nlhs,plhs,nrhs,prhs)
!--------------------------------------------------------------------
! Matlab gateway for sirff
implicit none
! pointers to input/output data
! always take INTEGER*8, to let it work on 64-bit machines (SGI e.g.)
! 32-bit compilers will correct this to INTEGER*4, so don't worry about the
! warning(s) on this during compilation.
integer(8) :: plhs(*), prhs(*)
我是初学者,所以请耐心等待。任何帮助表示赞赏。
答案 0 :(得分:2)
您看到的错误消息来自英特尔编译器。您的Fortran mex文件被视为固定格式的Fortran,无论您使用.f90
文件扩展名(传统上表示源是自由格式)。您可以使用ifort
本身轻松重新创建错误:
> ifort -fixed filename.f90
filename.f90(1): error #5149: Illegal character in statement label field [s]
subroutine mexFunction(nlhs,plhs,nrhs,prhs)
^
您说您已将filename.f90
重命名为filename.f
,但这无法修改源格式(从免费到固定),因此错误仍然存在。 Wikibooks描述了here如何制作固定格式的文件。对于该怎么做的一个好的经验法则是用6个空格缩进每一行,并将评论!
符号更改为C
s。这应该使您的mex
调用成功。
如果您想继续使用自由格式源,则需要修改mex选项以允许此操作。 mex
的MathWorks(英国)参考页面为http://uk.mathworks.com/help/matlab/ref/mex.html。