如何使用翻译程序f2c编译单个fortran对象?

如何使用翻译程序f2c编译单个fortran对象?,c,matlab,translation,fortran,C,Matlab,Translation,Fortran,我有以下问题:我想模拟一些控制工程系统。由于它相当复杂,我用计算机推导了一些(复杂的)方程,这些方程只能导出为fortran77代码。在我的开发pc上,这没有问题(linux机器) 不,我想在硬件上做,在这里我必须使用windows操作系统。不幸的是,matlab不支持windows上的gfortran。因此,我无法在该框上编译fortran文件 我现在的想法是将C编译器翻译成C,因为它可以在win上的matlab上使用。还有其他(更好的)选择吗 我有以下几种子程序 SUBROUTI

我有以下问题:我想模拟一些控制工程系统。由于它相当复杂,我用计算机推导了一些(复杂的)方程,这些方程只能导出为fortran77代码。在我的开发pc上,这没有问题(linux机器)

不,我想在硬件上做,在这里我必须使用windows操作系统。不幸的是,matlab不支持windows上的gfortran。因此,我无法在该框上编译fortran文件

我现在的想法是将C编译器翻译成C,因为它可以在win上的matlab上使用。还有其他(更好的)选择吗

我有以下几种子程序

      SUBROUTINE sys_rhs (x, v, dx, param) 
      REAL*8 x(6)
C     code is coming here
      RETURN
      END SUBROUTINE
在用C编写的接口函数中使用函数
sys\u rhs\uuu
是否是一种良好的做法,是否有效? 问题是,我无法测试它,因为我没有大量访问windows机器的权限。因此,如果我尝试它,它应该会起作用,我不需要做很多实验

在windows上我还需要什么库?在哪里可以买到

谢谢
Christian

有一个更好的办法来解决这一切

使用linux计算机或windows计算机在c/c++中实现该函数,然后生成dll文件

在matlab中,您可以加载DLL并调用其中的函数

下面是一个简单的教程,演示如何使用matlab调用dll


英特尔出售一款相当不错的fortran编译器(),他们曾免费赠送给他人进行测试…;-)


PS不,我与这家公司没有任何联系

您可能想检查该项目,该项目允许使用GNU GCC编译器套件(使用MinGW或Cygwin)编译MEX文件,并能够使用g77编译Fortran程序。

答案很简单:我的Fortran代码中有一些语法错误
gfortran
不进行这种严格的语法检查,因此正确地解释了fortran代码。在删除了打字错误后,我成功地用f2c进行了代码转换


谢谢

该函数是用fortran实现的,因为据我所知,我只能在maxima(计算机代数系统)中导出到fortran。如何在linux上生成dll?翻译成C似乎是最糟糕的选择。根据您的MATLAB版本,它将支持一些fortran编译器。由于过去10-15年中的任何fortran编译器都会编译f77代码,所以只需找到另一个编译器——与MATLAB一起工作的编译器,并使用该编译器即可。或者,如果您有linux matlab许可证,请在linux上使用英特尔的——如果内存允许,在linux上是免费的。另外,这个家伙应该设法让gfortran/g95+matlab玩得很好,所以这是可能的。我可以使用gfortran编译和模拟。但是硬件连接到了win机器上。。。目前只提到了适当的英特尔fortran编译器(R2010a由管理员安装)。@ChristianWol:你的问题不太清楚,你是说创建fortran MEX文件吗?@Amro:我在fortran例程中使用了C包装器。因此,我在linux机器上有一个“堆栈”,比如matlab>>mex>>C包装器>>fortran。问题是如何更改它,以便能够在win机器中运行代码我没有根权限,也没有安装fortran。好吧,f2c很好,但可能不是最优的。你需要什么样的LIB?我们怎么知道,你还没有说你的代码是做什么的。但是如果你无法访问Windows机器,那么你应该放弃。告诉他们,如果他们允许你使用所需的工具,你将完成这项工作。对不起,Propitary软件是不行的,因为它不适合我个人,而是适合我在大学的研究所。他们不满意,因为他们必须处理它。因此,如果Mathlab可以处理DLL中的代码(我在这里是因为将fortran移植到windows的问题,而不是Mathlab;-),我建议按照前面提到的方向创建DLL。这应该可以在MingGW下使用77国集团或在Windows下运行的Cygwin。