试图为Matlab

时间:2017-06-29 13:29:06

标签: matlab fortran gfortran mex

我有一个扩展名为.F的文件,我想编译它以使用我的Matlab代码。要做到这一点,我试图使用mex工具。 " mex -setup FORTRAN -v"回报。

  
    

mex -setup FORTRAN -v

  

详细模式已开启。

...寻找编译器'英特尔Visual Fortran Composer XE 2011与Microsoft SDK 7.1' ...

...寻找环境变量' IFORT_COMPILER12' ...没有

未找到已安装的编译器'英特尔Visual Fortran Composer XE 2011与Microsoft SDK 7.1'。

...寻找编译器'英特尔Visual Fortran Composer XE 2011与Microsoft Visual Studio 2008' ...

...寻找环境变量' IFORT_COMPILER12' ...没有

未找到已安装的编译器'英特尔Visual Fortran Composer XE 2011与Microsoft Visual Studio 2008'。

...在Microsoft Visual Studio 2010中寻找编译器'英特尔Visual Fortran Composer XE 2011' ...

...寻找环境变量' IFORT_COMPILER12' ...没有

未找到已安装的编译器'英特尔Visual Fortran Composer XE 2011与Microsoft Visual Studio 2010'。

...在Microsoft Visual Studio 2008中寻找编译器'英特尔Visual Fortran Composer XE 2013' ...

...寻找环境变量' IFORT_COMPILER14' ...没有

...寻找环境变量' IFORT_COMPILER13' ...没有

未找到已安装的编译器'英特尔Visual Fortran Composer XE 2013与Microsoft Visual Studio 2008'。

...在Microsoft Visual Studio 2010中寻找编译器'英特尔Visual Fortran Composer XE 2013' ...

...寻找环境变量' IFORT_COMPILER14' ...没有

...寻找环境变量' IFORT_COMPILER13' ...没有

未找到已安装的编译器'英特尔Visual Fortran Composer XE 2013与Microsoft Visual Studio 2010'。

...寻找编译器'英特尔Visual Fortran Composer XE 2013与Microsoft Visual Studio 2012' ...

...寻找环境变量' IFORT_COMPILER14' ...没有

...寻找环境变量' IFORT_COMPILER13' ...没有

未找到已安装的编译器'英特尔Visual Fortran Composer XE 2013与Microsoft Visual Studio 2012'。

使用mex时出错

未找到支持的编译器或SDK。有关选项,请访问   http://www.mathworks.com/support/compilers/R2014b/win64.html

在我看来,问题是我没有任何默认编译器。所以我用gfortran编译器下载了MGW,现在我想把它设置为mex编译的工具。通过互联网浏览我还没有找到任何指示如何这样做。我很乐意建议如何做到这一点或任何其他方式。

可以考虑替代方案的人的一些额外信息。 我得到了扩展名为.F的文件。我已经编译了扩展名为mexa64的二进制文件,它代表Linux二进制文件。但我需要得到的是mexw64,它是64位Windows的版本。

另外这是getCompilerConfigurations的输出,它显示有一个C编译器而没有Fortran编译器

  
    

mex.getCompilerConfigurations(' C&#39)

  

ans =

CompilerConfiguration with properties:

         Name: 'Microsoft Visual C++ 2012 (C)'
 Manufacturer: 'Microsoft'
     Language: 'C'
      Version: '11.0'
     Location: 'D:\apps\visualstudio2012'
    ShortName: 'MSVC110'
     Priority: 'A'
      Details: [1x1 mex.CompilerConfigurationDetails]
   LinkerName: 'link'
LinkerVersion: ''
       MexOpt: 'C:\Users\Ian\AppData\Roaming\MathWorks\MATLAB\R2014b\mex_C_win64.xml'
  
    

mex.getCompilerConfigurations('的Fortran&#39)

  

ans =

0x1 CompilerConfiguration数组,其属性为:

Name
Manufacturer
Language
Version
Location
ShortName
Priority
Details
LinkerName
LinkerVersion
MexOpt

2 个答案:

答案 0 :(得分:1)

您需要为mingw fortran编译器创建自己的mexopts设置xml文件。

在/ bin / mexopts文件夹中,将存在mingw64.xml文件。这是受支持的mingw gcc编译器的mexopts文件。在顶部的配置选项中显示Language="C"

在定义用于编译器和链接器等的命令时,文件的结构非常清晰。因此,您需要为FORTRAN编译和链接创建等效文件,然后可以设置Language="FORTRAN"

一旦创建了my_mingw_Fortran.xml这样的mexopt文件,您就可以通过在MATLAB提示符下使用以下命令,告诉MATLAB mex将其用于FORTRAN

  

mex设置:my_mingw_Fortran.xml FORTRAN -v

对不起,我在Windows上没有mingw / gcc的示例,但是我使用此过程来获取MATLAB以在Linux机器上使用Intel Fortran编译器。

答案 1 :(得分:0)

您可以尝试Gnumex tool。它用Mingw编译器替换了默认的mex文件基础结构(实际上你可以在gnumex和内置mex处理之间来回切换)。对我来说(MATLAB 2014b)它运行得很好,我用它来编译Fortran代码。我只需要明确地与gfortran librbary联系。它需要mingw的TDM-GCC变体。