初学者的Mex错误 - MatLab

时间:2015-02-01 22:14:16

标签: matlab fortran mex

我开始使用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(*)

我是初学者,所以请耐心等待。任何帮助表示赞赏。

1 个答案:

答案 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