Fortran: Lahey LF90: Difference between revisions

From BlueM
Jump to navigation Jump to search
m (fix syntax highlighting)
 
Line 5: Line 5:
Automake-Datei:
Automake-Datei:


<fortran>
<source lang="make">
QUITONERROR
QUITONERROR
DEBUG
DEBUG
Line 13: Line 13:
LINK=@lf90 @%rf -dll -out %ex -ml winapi -fullwarn -g
LINK=@lf90 @%rf -dll -out %ex -ml winapi -fullwarn -g
TARGET=Target.dll
TARGET=Target.dll
</fortran>
</source>
 
 
 


;TIP: Es können mit LF90 keine Proceduren eines Moduls exportiert werden ! Deshalb eigene Subroutine/Funktion mit Modulproceduraufruf implementieren.
;TIP: Es können mit LF90 keine Proceduren eines Moduls exportiert werden ! Deshalb eigene Subroutine/Funktion mit Modulproceduraufruf implementieren.
Gültige Schnittstellendefinitionen mit LF90
Gültige Schnittstellendefinitionen mit LF90
<fortran>
<source lang="fortran">
       subroutine TEST_MODULE()
       subroutine TEST_MODULE()
       USE MOD_BLABLA
       USE MOD_BLABLA
Line 65: Line 62:
         TEST_UEBERGABE_C2 = .true.
         TEST_UEBERGABE_C2 = .true.
       end function
       end function
</fortran>
</source>


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

Latest revision as of 09:47, 27 January 2018

Fortran Compiler Lahey LF90

DLL erstellen

Automake-Datei:

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
TIP
Es können mit LF90 keine Proceduren eines Moduls exportiert werden ! Deshalb eigene Subroutine/Funktion mit Modulproceduraufruf implementieren.

Gültige Schnittstellendefinitionen mit LF90

      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
TIP
Aufpassen manchmal sind die exportierten Methdoden "case sensitive" !!!