国势txt全文下载:win7 x64环境下安装 CVF6.6

来源:百度文库 编辑:中财网 时间:2024/05/09 11:04:20
keywords:win7 x64 CVF6.6 (for reference only)
date:January 6th,2010

win7 64 位 home premium 版本一用上真折腾人,想找个顺手的fortran编译器都不容易。因为俺的程序不是大程序(所有代码写在一个文件里够了,且生成的文件仅仅是console application),但又要用到函数库 imsl 里的函数和画图的 dislin 软件包,也不愿去花大钱买ivf,免费的g95用的格式、函数等好像跟cvf的有些不同,也不愿去修改源代码了,所以最顺手的还是用 cvf6.6。 不幸的是从 baidu,google上没找到运行 cvf6.6 的好方法。

经过若干小时的搜索,实验&折腾,个人感觉cvf和win7(x64)的不兼容不是编译器本身问题而是cvf 的 ide和系统不兼容闹得。其它不多白话了,直接说俺运行程序的办法(dislin 可以用,还没测试 imsl,原则上是没问题的)。

1. 安装好cvf后不以“兼容xp模式”运行,而以兼容“win98”或“win95”方式运行。
2. 放弃developer studio,notepad++ 调用 df.exe

俺试了第1种方法后不爽才搞了第2种方法。不管哪种,先要安装cvf,要注意的是,安装时不运行盘根目录中的setup.exe,而是进入盘中的 x86 目录,运行 setupx86.exe。

正常安装完后就可以试试第1种方式了:点开始,找到 developer studio,右键点属性,再点兼容性,选择“以兼容模式运行这个程序”,再选下面的windows 98 或windows 95 (选了win NT,2000或xp在俺这里不能用),按说是可以了,但运行的时候常会提示兼容性问题或其它问题,不管它们。这样,在俺这里至少是可以编译源文件并制造出exe文件来的,但不能在 ide 界面调用 exe 文件,那只好到debug目录下去运行exe文件了,如果程序需要读取外部文件,那么外部文件也需要和exe文件在同一目录下,除非源文件中给了外部文件的绝对路径。对俺的应用来说虽然凑合着用 cvf 已经可以了,但很不方便。

后来搜到说cvf支持命令行方式,又由上面的成功编译源文件看到,编译程序本身好像是没什么兼容问题的,那就可以象linux下那样定制自己的 ide 了。由于win7带了powershell,原则上可以象linux那样写shell了,不过俺还是喜欢原来的ide中的快捷方式,于是决定用notepad++自己定制两个快捷键:ctrl+F7 和 ctrl+F5,这样也省去了cvf的ide产生的那几个看着不顺眼的 dsw,dsp,debug等等目录或文件。经过试验,可以用 ctrl+F7 调用 

cmd /k cd "$(CURRENT_DIRECTORY)" & df "$(FILE_NAME)" & pause & exit

俺自己取的名字叫 "compile+link";可以用 ctrl+F5 调用

cmd /k cd "$(CURRENT_DIRECTORY)" & "$(NAME_PART)" & PAUSE & EXIT

俺叫它 "run"。其中,cmd 是指命令行方式,/k 是指运行后面的命令,cd 是指进入源文件在的目录,& 相当于命令行方式下的下一个命令,df 是 cvf 的编译器,因为前面已经装了cvf,df已经加入到 windows 环境变量中了,df 可以在任何一个目录中调用,pause 显示“按任意键继续...”,exit 就是关闭命令行窗口。这样在 notepad++ 中按了 ctrl+F7 后,如果源文件有错误,错误就显示在命令行窗口中了(ide 只是把这些提示经过增减修改后显示在ide窗口下面)。原则上说,可以定义更长的命令,把这些命令写在一个 .bat 文件中,可以通过这个 bat 文件实现自动编写其它的 bat 文件功能,或者编写等效的 project 文件等等,以便更好模仿原来的 ide。不过这要深入了解 df.exe 的那些选项,批处理文件怎么编写以及深入了解怎么定制自己的 notepad++,俺现在不需要,就不折腾了。

fortran 编译这下可以用了(至少够俺自己用的了),下面简单的说说怎么调用 dislin,其实论坛中有相关的文章,可以搜一搜。现在在自己的方式下,还是把要调用的库写在源程序中(库的路径要写绝对路径)最方便,如下:

program plot_xxxx
    
    implicit none
    !DEC$ OBJCOMMENT LIB: "c:\dislin\disdll.lib"
    !DEC$ OBJCOMMENT LIB: "c:\dislin\disdll_d.lib"
    !DEC$ OBJCOMMENT lib: "c:\dislin\disdvf.lib"
    !DEC$ OBJCOMMENT lib: "c:\dislin\disdvf_d.lib"

    real :: x,y, ...

    ...
    ...

end program 

以上是俺个人的一点儿经验,如果要求不高可以试试调用命令行方式的方法继续让 cvf 在64位 win7 中为大家干活,仅作参考,希望能对需要的人有点儿帮助。文中有错误的认识也请大家指正。