resueltos programas programación problemas ejemplos descargar compilador fortran fortran90 intel-fortran

programas - compilando un programa Fortran con múltiples partes



problemas resueltos de programación en fortran 95 pdf (2)

Así es como lo hice. Cada una de las funciones de soporte se compila en una Biblioteca estática . Luego, en el proyecto del programa principal, agregue un elemento existente y seleccione el archivo .lib biblioteca estática (Salida de la compilación). Simplemente llama a las funciones como si su fuente fuera parte del código principal (con CALL MYLIBFUN() )

Buena suerte.

Soy muy nuevo en Fortran y en todo el compilador de Intel (estoy usando el compilador de Intel basado en Windows con la biblioteca IMSL sin integración de Visual Studio, por lo tanto, solo en la línea de comandos).

El problema debería ser extremadamente simple: tengo un programa Fortran que necesitaba compilar que está almacenado como cuatro partes diferentes del código fuente. El programa principal (y algunas subrutinas) se almacenan en el archivo de código llamado central.for, y también hay tres archivos, llamémoslos s1.for, s2.for y s3.for, cada uno de los cuales contiene solo una subrutina (permite llámalos sub1-sub3) y sin programa principal. El programa principal llama a las subrutinas almacenadas en s1-s3 y en central.for.

La pregunta es cómo debería compilarlo:

Cuando intento compilar el archivo central.for, da el error LNK2019: unresolved external symbol _SUB1 referenced in function _MAIN__ . De manera similar, da el mismo mensaje para SUB2 y SUB3.

Cuando intento compilar s1.for-s3.for, aparece el error LNK2019: unresolved external symbol _MAIN__ referenced in function _main

Parece obvio que necesito vincularlos de alguna manera. Sin embargo, no tengo idea de cómo


Debe compilar las piezas del programa sin vincular primero, luego vincularlas todas juntas. Entonces su línea de comando se verá así:

ifort /c s1.for ifort /c s2.for ifort /c s3.for ifort /c central.for

donde el /c es corto para /compile-only ; /nolink también funcionaría. Esto generará los archivos s1.o, s2.o, s3.o y central.o, respectivamente. Lo anterior se puede hacer en cualquier orden. Ahora las piezas individuales se unen, y harás algo como

ifort /exe:central.exe central.o s1.o s2.o s3.o

para construir el ejecutable

Tenga en cuenta que esto se vuelve un poco más complicado si está compilando un código fortran moderno que usa módulos, y (por ejemplo) el programa principal en central.for tiene una línea como use s2 . En ese caso, debe compilar (incluso con /c ) s2 antes de central; cuando compila s2, en ese caso obtendría un archivo de salida adicional, s2.mod. Ese archivo s2.mod sería necesario para compilar central.for. Pero dadas las extensiones de nombre de archivo, es probable que se trate de un código anterior y los módulos probablemente no sean un problema.