Fortran: Lahey LF90

From BlueM
Jump to navigation Jump to search

Fortran Compiler Lahey LF90

DLL erstellen

Automake-Datei:

<fortran> QUITONERROR DEBUG FILES=*.for COMPILE=@lf90 -ap -chk -g -co -f90 -lst -pca -sav -stchk -trace -w -wo -xref -c %fi -DLL -WIN -ML WINAPI

LINK=@lf90 @%rf -dll -out %ex -ml winapi -fullwarn -g TARGET=Target.dll </fortran>



TIP
Es können mit LF90 keine Proceduren eines Moduls exportiert werden ! Deshalb eigene Subroutine/Funktion mit Modulproceduraufruf implementieren.

Gültige Schnittstellendefinitionen mit LF90 <fortran>

     subroutine TEST_MODULE()
     USE MOD_BLABLA
     DLL_EXPORT TEST_MODULE
       call BLABLA_Procedure() 
     end subroutine


     subroutine TEST_dlL()
     DLL_EXPORT TEST_dll
     end subroutine


     function TEST_FUNCT()
     LOGICAL :: TEST_FUNCT
     DLL_EXPORT TEST_FUNCT
     end function


     LOGICAL function TEST_FUNCT2()
     DLL_EXPORT TEST_FUNCT2
       TEST_FUNCT2 = .true.
     end function


     LOGICAL function TEST_UEBERGABE_Z(Zahl)
     USE MOD_SCHNITTSTELLE
     DLL_EXPORT TEST_UEBERGABE_Z
     INTEGER Zahl
       TEST_UEBERGABE_Z = .true.
     end function
     LOGICAL function TEST_UEBERGABE_C(str)
     USE MOD_SCHNITTSTELLE
     DLL_EXPORT TEST_UEBERGABE_C
     CHARACTER(1024) str
       TEST_UEBERGABE_C = .true.
     end function
     LOGICAL function TEST_UEBERGABE_C2(str)
     USE MOD_SCHNITTSTELLE
     DLL_EXPORT TEST_UEBERGABE_C2
     CHARACTER(*) str
       TEST_UEBERGABE_C2 = .true.
     end function

</fortran>

TIP
Aufpassen manchmal sind die exportierten Methdoden "case sensitive" !!!