回 帖 发 新 帖 刷新版面

主题:我有一fortran程序在dos环境下运行没错但在windowns下不能出结果请问为什摸

请各位高手帮忙,我该怎摸解决这一问题,谢谢

回复列表 (共19个回复)

沙发

因为 Fortran 的可移植性比较差!

板凳

Fortran是可移植性最好的计算机语言之一。

你用的是什么编译器?是什么系统?
有些编译器能生成Dos运行软件,但不能在Win32下运行。

3 楼

Fortran 和 Assembler 比,可移植性当然好啦;
C 批判 Fortran 的重要的一条就是 可移植性 差!

4 楼

1. 我说“之一”。不排斥其他
2. 这种批判是单方面的,是针对老Fortran的,现在有多少人真正懂现代的Fortran?
3. 还是回答原问题:dos下可运行,Windows下不能运行,绝不是语言可移植性的问题,是编译器的问题。

5 楼

程序编译器相关,不是和 可移植性 不好说法一样吗?
    很多 C 的代码,在 Win 下可以运行,在 Linux 下也可以运行,编译器当然也不一样,因此我们说它的可移植性 好。
    不对之处,敬请指正!

6 楼

语言的可移植性 应该是指源代码不经任何修改就可以在各种平台上(用该平台上的编译器)编译执行。

标准Fortran语言的源代码,不经任何修改,就可以在Dos,Win16,Win32,Linux,Unix,VAX,。。。。上编译执行。而且,F90之后的版本,还专门增添了控制数值精度的语法功能,使得在不同平台上不仅可以运行,而且可以控制同等的精度。例如:64位机的单精度可能比32位机的单精度长一倍,这样,同一个代码,移植到64位机上可能会给出完全不同的数值结果,但是F90/95可以控制64位机上的给出同32位机上相同的数值结果(32位以内))!

早期的Fortran编译器(如MS Fortran),只能编译出DOS下运行的EXE,那种EXE就不能在Win环境下执行,甚至也不能在Win32的Dos窗口下运行,那是编译器的问题。早期的C语言编译器也是一样,其Dos下的编译器编译出来的exe,也不一定能在Win32的dos窗口下运行。这是编译器编译出来的EXE的兼容问题,例如,WinXP下的EXE属性中就有一项兼容模式的选项共用户设置。

VB是MS Windows的语言,到纯Dos环境中根本无法用,连编译器都没有,就谈不上可移植性。

探讨。。。

7 楼

C 中的 编译预处理 命令就可以用来解决程序移植的问题,我们可以看看一些库文件,就可以发现其中有很多的诸如“如果定义某某平台,。。。,如果定义另外的平台,有如何如何”;typedef 就可以用来解决不同系统 --> 内部类型表示字节不同 这个差异。
    很遗憾的是,Fortran 在这方面还很欠缺。VF 在这方面有所扩展,但可惜的是,它目前还不是 Fortran 的标准语法,说不定以后的新语法会加入相关的功能; Fortran90/95 已经向 C 学了不少东西,这个也是事实,因此,我深信将来的 将来的 Fortran 语法,会有 编译预处理 命令的。

8 楼

是和编译器有关,我也遇到这个问题,在powerstation4.0上和在cvf上发现的错误就不一样。我个人觉得FORTRAN是编译形式的语言,可能与编译的平台有关,至于它语言本身听说有精度问题。粗浅的看法

9 楼

可移植性应该并非针对编译器而言,mltx的解释应该是对的。

对可移植性,C/C++与FORTRAN应该差不多,可移植性都不错,只要程序是按照标准编写并且编译器对标准完全支持

至于编译预处理,其实针对不同的平台,自己用FORTRAN曲线实现其大部分功能也是可以的呀,如果从控制精度来说,对90以后的标准,只要按标准来,应该不需要

10 楼

答复楼主一下,这是正常现象啊,呵呵。
笼统地讲,就叫软件的兼容性问题,在非商品化的软件中经常会遇到的。

楼主有源代码吗?在WINDOWS平台下重新编译连接一下吧。

我来回复

您尚未登录,请登录后再回复。点此登录或注册