完成mingw-w64 与64 bit win7上的matlab 2010a 64 bit混合编译

     耗时近两个星期,终于整的可以用了。我的目的是要从64位的matlab上调用一个函数库。由一些Fortran代码,很多shell脚本,大量makefile和几个用c与fortran混合编写的mex文件组成。因为其命令大多是bash脚本,所以只能在类unix平台实现。

     最一开始在32位utunbu虚拟机装了matlab r14。安装过程也颇费周折,因为装上后只能出来命令行的matlab,出不来IDE。后来发现是找不到java虚拟机的缘故。装个jre6,设置javahome以及path等环境变量后即正常了。但本子配置不算太好,运算规模大点的问题就慢的厉害,所以决定还是回到win7的64位matlab 2010a。 

     于是开始试着在cygwin上完成这个工作,计划使用了g95做为编译器,以及使用gnumex来产生mexopts.bat。 可实际开始做时,才知道matlab 64位不能调用32位mex,所以当时困惑的厉害,网上也找不到解决方法。看有人说道gnumex对mingw支持比cygwin好,我直接下载了mingw-w64,一个拥有64位gcc和64位gfortran的mingw。

       首先下载了近二百M的mingw-w64文件,又找了一个32位的msys安好了。其后将msys的mingw指向mingw-w64的安装文件即可。windows shell下的mex命令是matlab bin目录中的mex.bat,这个在msys中不能执行。我们还要构造一个类似mex.bat的msys脚本。这个脚本调用mex.pl,同时将命令行参数传给mex.pl。

      gnumex并没有运行起,在gnumex的官网上看到一个用户提到怎样运行在matlab 2010a上,于是照猫画虎做了一遍。但还解决不了问题,有了这些经验,于是自己在gnumex中下了断点,慢慢的跟踪的看出了啥问题。最主要的是要用matlab的mex命令基于64位的c编译器编译一遍src目录中的shortpath.c与uigetpath.c。得到两个文件shortpath.mexw64与uigetpath.mexw64,编译好后与gnumex.m放一块。我使用了vc++ 2008 express和windows sd

你可能感兴趣的:(matlab,2010,fortran,windows,gcc,脚本)