Tuesday, June 28, 2011

把在Linux中使用GCC开发的程序在Visual Studio+IVF中编译需要更改的地方

建立sublib的库文件sublib.lib:
  1. 根据sublib文件夹中的Makefile中提到的.o文件,加入这些文件到此IVF的工程中;
  2. .inc的需要include的文件需要放入到工程中,在属性-Fortran-General中,把.inc所在的目录加入到Additional Include Directories;
  3. 在源文件中注释掉的include的语句,需要取消注释,继续使用:efind.f,eowck.f,orbta.f,eptbl2.f,orbt1.f;
  4. 在IVF中循环语句使用的标号,比如rhead1.f中的8,只能用于循环,不能用于其它语句的goto跳转,所以这里goto跳转的标号需要与循环的标号独立;
  5. 属性-Fortran-Diagnostics-Check routine Interfaces 改为:No。
建立phasedit的库文件libphase.lib:
  1. 根据sublib文件夹中的Makefile中提到的.o文件,加入这些文件到此IVF的工程中;
  2. .inc的需要include的文件需要放入到工程中,在属性-Fortran-General中,把.inc所在的目录加入到Additional Include Directories;
  3. 属性-Fortran-Diagnostics-Check routine Interfaces 改为:No;
  4. 再Common里面声明的变量,在子程序中又重新以Local形式声明了,重复声明,应该把Local中的声明去掉,hasL1;
  5. 在read和write时,格式要加unit=,fmt=这两个就全加,否则就全不加,一个加一个不加会导致无法通过编译
  6. 在fmt=中的格式的书写形式不宜用//连接两个字符串的形式。
建立主程序prepmain:
  1. 根据prep文件夹中的Makefile中提到的.o文件,加入这些文件到此IVF的工程中;
  2. .inc的需要include的文件需要放入到工程中,在属性-Fortran-General中,把.inc所在的目录加入到Additional Include Directories;
  3. 在源文件中注释掉的include的语句,需要取消注释;
  4. 属性-Fortran-Diagnostics-Check routine Interfaces 改为:No;
  5. 内部函数MOD的自变量需要同种类型的,比如都是real或者都是integer,如果是不同类型,在IVF中不能自动转化,需要更改代码强制转化,比如这里需要把intrv强制转换成实型。
  6. 只需要把.lib文件加入到工程中就可以了,不用把.lib所在的目录放到linker-General,以及.lib的文件名放到linker-input就可以运行。

No comments:

Post a Comment