将FORTRAN转换为C/C++

Odd*_*ore 10 c c++ windows fortran nmake

作为我的最后一年项目的一部分,我需要将一些FORTRAN代码转换为C或C++(只要我能理解它,哪种语言无关紧要,我能理解C风格的语言).

我发现f2c,一个据称将FORTRAN转换为C的程序,并尝试按照说明安装它,方法是在我的驱动器上保存makefile.vc文件,然后执行

copy makefile.vc makefile
nmake
Run Code Online (Sandbox Code Playgroud)

(这是有关安装f2c的README文件的一部分,该文件包含在f2c 下载页面中)

要在Linux或Unix系统上编译f2c,请将makefile.u复制到makefile,必要时编辑makefile(参见下面的注释)并输入"make"(或者可能是"nmake",具体取决于您的系统).

要使用Microsoft Visual C++在MS Windows系统上编译f2c.exe,

复制makefile.vc makefile nmake

对于其他PC编译器,您可能需要使用-DMSDOS编译xsum.c(即使用MSDOS #defined).

如果您的编译器不理解ANSI/ISO C语法(即,如果您有K&R C编译器),请使用-DKR_headers进行编译.

在非Unix系统中,文件具有单独的二进制和文本模式,您可能需要"make xsumr.out"而不是"make xsum.out".

我正在运行x64位版本的Windows Vista并尝试"nmake",但我得到了

'nmake'不被识别为内部或外部命令,可操作程序或批处理文件.

我经过一些搜索后下载了Nmake15.exe但它在x64位机器上不起作用,显然没有它的版本.所以我在被告知可行的情况下下载了Windows SDK,但它没有改变任何东西.

我在哪里出错了,如果有的话,有没有办法将FORTRAN代码转换成C或C++?

ASh*_*lly 7

我只回答您问题的最后一部分:

有什么办法可以将FORTRAN代码转换为C或C ++?

是的,这里有:读取fortran代码,并将等效的C语句写入C文件。它们都是命令式语言。语法不同,但并非不可能解码。与自动转换器相比,这可能会给您带来更好的结果,并且也使您对原始程序的工作原理有更深入的了解。

  • 这个答案可以归结为:“如何解决此错误?” -“只是rtfm和DIY,老兄”。该答案适用于任何SO问题。在数学上,我们称其为“平凡的解决方案”。 (11认同)

LCF*_*ion 7

我发现有一个名为fable fable的小工具包- 自动Fortran到C++的转换,专门用于这种转换.

这也是对这种工具的回顾.摘要来自评论作者:

背景

在科学计算中,Fortran在20世纪的大部分时间里都是主要的实现语言.在此期间积累的许多工具很难与现代软件集成,而现代软件现在由面向对象语言主导.

结果

在大型科学软件项目的要求的推动下,我们开发了一个名为FABLE的Fortran到C++源到源转换工具.这使得即使在切换语言时也能够继续开发新方法.我们在三个主要项目中报告了FABLE的应用,并展示了Fortran和C++运行时性能的详细比较.

结论

我们的经验表明,与原始开发时间(通常以年为单位)相比,大多数Fortran 77代码可以通过较小的工作量(以天为单位)进行转换.通过FABLE,可以以便携和可维护的方式在现代面向对象的环境中重用和发展遗留工作.FABLE在非限制性开源许可下提供.在FABLE中,Fortran源的分析与C++源代码的分离是分开的.因此,FABLE的一部分可以重用于其他目标语言.

  • 它不是评论,而是该工具作者撰写的文章。 (2认同)

Dav*_*nan 5

f2c 确实是要走的路,前提是您有 F77 代码。如果您有 F90 或更高版本,那么 f2c 将无济于事。我已经多次使用 f2c 并取得了巨大的成功,只要你记得 -a 开关。

顺便说一句,我将 f2c 评为有史以来最棒的代码之一!