You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Silver-frost FTN95项目编译Matlab mex文件所需软件及编译问题

解决MATLAB调用Fortran子routine的编译问题

问题根源拆解

  1. .f95扩展名识别失败:Intel Fortran编译器默认仅将.f90视为自由格式Fortran文件的合法扩展名,.f95不在其默认识别列表中,因此会抛出未知扩展名错误。
  2. 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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 02:52:39