Silver-frost FTN95项目编译Matlab mex文件所需软件及编译问题
解决MATLAB调用Fortran子routine的编译问题
问题根源拆解
- .f95扩展名识别失败:Intel Fortran编译器默认仅将
.f90视为自由格式Fortran文件的合法扩展名,.f95不在其默认识别列表中,因此会抛出未知扩展名错误。 - FEXISTS@函数报错:
FEXISTS@是Silverfrost FTN95专属的内置函数,末尾的@是FTN95的调用约定标识,Intel Fortran完全不支持该语法和函数。
编译mex文件的必要软件
MATLAB R2021b在Windows平台编译Fortran mex文件,需搭配以下官方支持的工具:
- Intel Parallel Studio XE 2019 for Fortran(你已安装,符合版本要求)
- Microsoft Visual Studio 2015/2017/2019(你使用的VS2015符合要求)
Silverfrost FTN95并非MATLAB官方支持的mex编译工具,不建议用它来适配MATLAB mex开发。
具体修复步骤
1. 文件扩展名处理
保留.f90作为Fortran文件的扩展名,Intel Fortran会自动按自由格式代码编译该类型文件,无需额外调整。
2. 替换FTN95特有函数
将代码中的FEXISTS@替换为Intel Fortran兼容的实现,两种可选方案:
方案一:使用Intel Fortran的IFPORT模块函数
USE IFPORT INTEGER :: errorcode LOGICAL :: result_logic CHARACTER(LEN=*) :: filename result_logic = FILE_EXISTS(filename)
方案二:使用标准Fortran INQUIRE语句(可移植性更强)
INTEGER :: errorcode LOGICAL :: result_logic CHARACTER(LEN=*) :: filename INQUIRE(FILE=filename, EXIST=result_logic, IOSTAT=errorcode) ! errorcode为0表示查询成功,非0值对应具体错误类型
3. 确认编译配置
确保C:\Program Files\MATLAB\R2021b\bin\win64\mexopts\intel_fortran_19_vs2015.xml中的COMPFLAGS已移除/fixed选项,保证编译器按自由格式处理.f90文件。
最终编译命令
修改代码后,执行以下命令完成mex文件编译:
mex your_fortran_file.f90
内容的提问来源于stack exchange,提问作者Shinrei
相关产品推荐
相关产品推荐

