初学者的 Mex 错误 - MatLab
Beginner's Mex Error - MatLab
我开始使用 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(*)
我是初学者,请多多包涵。感谢任何帮助。
您看到的错误消息来自英特尔编译器。无论您使用的是 .f90
文件扩展名(传统上表示源是自由格式),您的 Fortran mex 文件都被视为固定格式的 Fortran。您可以使用 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。
我开始使用 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(*)
我是初学者,请多多包涵。感谢任何帮助。
您看到的错误消息来自英特尔编译器。无论您使用的是 .f90
文件扩展名(传统上表示源是自由格式),您的 Fortran mex 文件都被视为固定格式的 Fortran。您可以使用 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。