耗时近两个星期,终于整的可以用了。我的目的是要从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中下了断点,慢慢的跟踪的看出了啥问题。最主