
新手求教一个问题fortran同时运行两个程序?内容详见
ANB3.DAT.obj : error LNK2005: _MAIN__ already defined in 124.OBJ
Debug/124.exe : fatal error LNK1169: one or more multiply defined symbols found
Error executing link.exe.
希望哥哥姐姐们为我解答一下,thank you! 展开
Linking...ANB3.DAT.obj : error LNK2005: _MAIN__ already defined in 124.OBJ 意思是说ANB3.DAT.obj和124.OBJ两个文件里面都有main程序,即一个工程里面有两个main程序,所以出错了
两个main程序应该是独立运行的
几点基本概念:
fortran 是一门语言。由国际标准组织制定其语法规范。各厂商根据规范编写编译器产品,各程序员下载或购买编译器产品,根据规范书写代码,得到程序。
全世界为 Fortran 编写过编译器产品的厂商有二十多个,其产品也有各种品牌和版本。windows,linux,sun等平台均有若干产品。
不同的编译器产品,其界面,操作方式都不同。你需要明确你使用的是何种编译器。例如 compaq visual fortran。(彭国伦的书以此编译器为例)
程序,源代码文件。这两者是不同的概念。同一个程序可以由多个源代码文件(*.f90 或 *.for)共同编译而成。实际上,稍微大一点的程序都是这样。
同一个程序,尽管可以由多个源代码文件共同编译得到,但通常只能有一个主程序!这代表着程序的入口。你的问题,就是主程序重复定义了。在多个源代码文件中,存在超过一个的主程序。
我不知道你的代码是否适合两段代码同时运行。可能并不是同时,而是其中一个源代码文件中的代码,调用另一个源代码文件中提供的函数或子程序。如果是后者这样,可参考彭国伦的书。
你要把其中一段代码改为子程序或函数,以避免存在多个主程序。但我不确定你的代码是否适合这样。并不是所有代码都可以糅合在一起,成为同一个程序。
所以,你需要全面的了解你的两个源代码文件,每一个函数过程都是做什么用的。应该是怎样的一个流程。然后确定是否可以通过修改使得他们共同编译成一个程序。