相信有很多使用IVF+VS组合的朋友,都是由 Compaq Visual Fortran 转型而来的。
前者使用 VS 为集成开发环境(IDE),而后者实际上是 VC++ 6.0 的开发环境。在操作上,这两者有一个最大的差别。
在介绍两者的差别前,我们先引入一个重要的概念:工程。
在一些较大的编程任务中,我们很难再使用单一一个源代码文件进行操作了。原因有几个:
1.数万乃至数十万行代码中,去定位一个语句非常困难。
2.因为代码量很大,打开或编译这个源代码文件,速度都会很慢。
3.不利于多人合作进行程序开发。
因此,使用工程管理代码可以极大的提高效率。甚至是必须使用的。工程允许多个源代码文件分别实现不同的功能,由工程统一进行管理。工程来调度这些源代码文件,哪些参与编译,哪些参与链接,编译链接时使用什么方式和参数等。
因为多个源代码书写了,所以同一个源代码代码行数就少了,定位语句更容易。
同时,修改代码后只需要重新编译经过修改的源代码,而大多数保持原样的源代码则不再重新编译,速度得到了提升。
多人合作也变得容易了,不同的人可以负责不同的源代码部分,最后放在一个工程里进行编译链接。
上面的三个问题都可以由工程来很好的解决。
工程的管理有多种方式,在本站的其他几篇 FAQ 系列文章中曾经介绍过,我们可以使用 makefile 文件(make,cmake 或 nmake)进行工程管理。它们的优点就是一次书写,多次使用,且具有跨平台使用的优势。我们也建议您更熟练以后或者对跨平台有需求的用户使用这种管理方式。
除了makefile方式之外,IDE 的另一个重要功能,也是工程管理。CVF 使用 VC++ 6.0 的IDE 和工程管理,而 IVF 使用 Visual Studio 的 IDE 和工程管理。
在 IDE 管理时,往往还有工作区(workspace)的概念(在VS里叫solution / 解决方案),即,一个工作区可包含1个或多个工程。
关于他们的工程管理,两者的差别可归纳如下表:
Compaq / VC++ 6.0 | Intel / Visual Studio | |
工作区 | workspace / *.dsw 文件 | solution / *.sln 文件 |
工程 | project / *.dsp 文件 | vfproject / *.vfproj |
打开 源代码 |
打开 *.f90 *.for *.f 源代码文件 编译链接,则自动创建同名的 dsp 和 dsw 工程 如果之前有创建工程,则会被覆盖 |
打开*.f90 *.for *.f 源代码文件 不允许编译链接 |
打开 工程 |
打开 *.dsw 或 *.dsp 文件 则加载工程包含的全部源代码文件 |
打开 *.sln *.vfproj 文件 则加载工程包含的全部源代码文件 才可以进行编译链接 |
因此,使用 Visual Studio 编译代码,必须使用 sln(解决方案)和 vfproj (工程)文件。
这一点差异,使得很多 Compaq 程序员转型到 Intel 后忽然很不适应。实际上,使用工程文件的好处非常多,我们也十分强烈的建议程序员使用多个源代码文件书写来完成较复杂的工作,并使用工程来管理多个源代码。
即便您使用 Compaq Visual Fortran,我们也建议你在下次打开代码时,通过 dsw 或 dsp 进行打开。
第二,VS 如何创建工程,添加代码
有了上面的关于工程的了解,开始使用 VS ,概念就很清楚了。
首先打开 VS,选择文件(File),新建(New),项目(Project)菜单,选择你希望创建的 Intel Visual Fortran 的工程类型(一般是 console)。Empty Project 和 Main Program Code 没有太大的差别,只是后者会由工程向导为你生成简单的主程序。
注意选择工程存放的文件夹。下次你打开工程,需要到这个文件夹去寻找它哦!
创建工程后,会自动创建一个同名的解决方案并打开它。我们需要通过“解决方案资源管理器(Solution Explorer)”来查看它。如果你的VS界面上没有显示“解决方案资源管理器”,你需要到查看(view)菜单下找到它,并让它显示出来。有时候,它可能被隐藏在四周的角落里,仔细找找它吧。
上图是一个典型的解决方案,名字叫 Fcode_sln,其下包含1个工程,名字叫“console1工程”(实际上,VS允许解决方案下包含多个工程)
console1 和 Fcode_sln 这类名称,可以通过右键,重命名来改变。
工程下面,VS 默认会为我们创建三个文件夹。分别用于存放头文件( Header Files),资源文件( Resource Files) 和源代码文件( Source Files)。
一般来说,Header Files 用来存放一些函数库的信息部分(较少使用)。如果不是做windows界面开发的话,Resource Files 也不需要使用。
源代码文件,存放在 Source Files 下面既可。实际上,这三个文件夹的规定并不需要严格遵守。
另外,我们也可以自己创建分类,例如上图中的“计算相关代码”,我们还把 source3.f90 源代码放入其中。
这部分操作非常简单,右键就能完成了。读者可自行琢磨。如果要添加新的代码,则有两种选择,创建新代码和添加已经存在的代码。他们都很容易理解。
第三,VS 如何编译,链接
一般来说,不管工程里包含多少源代码,直接点击工具栏上的 “生成” 按钮或 “开始执行” 按钮,VS 都会自动帮助我们编译所需的全部代码,并且把他们链接成可执行文件。
默认情况下,VS 的工具栏上可能没有编译,链接,或执行的按钮。我们可以通过菜单栏来执行同样的操作。
也可以通过自定义工具栏把他们找出来。
在这里,可以把生成菜单,调试菜单上的部分功能,添加到工具栏上。
对于一般的工作,以下 4 个工具栏按钮就足够了:
一般情况下,使用开始执行(不调试)【Start without Debug】来执行程序。
第四,VS 无法执行程序?
如果按照本文描述的步骤来进行,一般是没有多大问题的。如果依然还是无法执行程序,那么可能的问题就是:
1.确保自己创建了工程,并且是 Visual Fortran 的 console 工程,有的时候你可能选错了其他的工程类型。
2.确保自己能在“解决方案管理器”里看到你的代码,有的时候你打开了源代码文件,但并没有添加到你的工程里,工程依然是空白工程。这种情况下,可以在工程的 Source Files 文件夹上右键,选择添加(Add),现有项(Exist file),把源代码文件添加到工程里。
3.不要单独用VS打开 *.f90 等源代码文件,除非你只是看看代码,不打算编译链接。
4.先编译,后链接。查看是那个步骤出现了错误?一定要在输出窗口看到 0 error(s) 以后才表示编译链接正常结束了。
5.暂时关闭杀毒软件。
6.查看之前运行的程序是否没有正常结束?任务管理器里是否有类似 console1.exe 的进程没有结束?
如果你能正常看到编译链接结束,0 error(s) 出现,那么恭喜你,你的程序就可以运行了。