<html>
  <head>

    <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    <font face="Courier New, Courier, monospace">olá a todos,<br>
      <br>
      estou tentando aprender o básico de como construir um código em
      Fortran<br>
      e usá-lo no R.<br>
      <br>
      Para tanto, criei o segundo código em Fortran:<br>
    </font><font face="Courier New, Courier, monospace"><font
        face="Courier New, Courier, monospace">------------------------------------------------------------------------------------------------<br>
      </font>        subroutine contador<br>
              ! Compilar como DLL para uso no R<br>
              implicit none<br>
              integer n, i<br>
              integer, allocatable :: r(:)<br>
              read *, n<br>
              allocate( r(n) )<br>
              !!!!!!!!!!!!!!!!!!!!!!!!!!!!!<br>
              do i = 1, n<br>
                  r(i) = i<br>
              enddo<br>
              !!!!!!!!!!!!!!!!!!!!!!!!!!!!!<br>
              end subroutine</font><br>
    <font face="Courier New, Courier, monospace"><font face="Courier
        New, Courier, monospace">------------------------------------------------------------------------------------------------<br>
      </font><br>
      No prompt do DOS, eu fui tentar usar o comando:  R CMD SHLIB
      contador.f90<br>
      e obtive o seguinte erro:<br>
      <br>
------------------------------------------------------------------------------------------------<br>
      C:\Users\CLEBER\Documents\code\contador>R CMD SHLIB
      contador.f90<br>
      C:/R/etc/x64/Makeconf:196: warning: overriding commands for target
      `.m.o'<br>
      C:/R/etc/x64/Makeconf:189: warning: ignoring old commands for
      target `.m.o'<br>
      gfortran -m64   -O2  -mtune=core2 -c  contador.f90 -o contador.o<br>
      gfortran -m64 -shared -s -static-libgcc -o contador.dll tmp.def
      contador.o -Ld:/RCompile/CRANpkg/extralibs64/local/lib/x64
      -Ld:/RCompile/CRANpkg/extralibs64/local/lib  -LC:/R/bin/x64 -lR<br>
      /usr/bin/sh: line 8: gfortran -m64: command not found<br>
------------------------------------------------------------------------------------------------<br>
      <br>
      não entendi o motivo do erro...<br>
      <br>
      Gostaria de alguma ajuda nesse Ponto (1) <- ***<br>
      <br>
      Contornei o problema "Copiando & Colando" os comandos no
      prompt.<br>
      <br>
      O arquivo * tmp.def * não existe... mas <br>
      então eu o criei por que havia compilado anteriormente com a IDE
      Code Blocks, e sabia da existência de um fulano  *libcontador.def*<br>
      <br>
      +++++++++++++++++++++++++++++<br>
      o conteúdo de def é apenas:<br>
      EXPORTS<br>
          contador_ @1<br>
      +++++++++++++++++++++++++++++<br>
      <br>
------------------------------------------------------------------------------------------------<br>
      gfortran -m64 -O2 -mtune=core2 -c contador.f90 -o contador.o<br>
      gfortran -m64 -shared -s -static-libgcc -o contador.dll tmp.def
      contador.o -Ld:/RCompile/CRANpkANpkg/extralibs64/local/lib 
      -LC:/R/bin/x64 -lR<br>
------------------------------------------------------------------------------------------------<br>
      <br>
      Após os comandos acima é gerado o arquivo contador.dll<br>
      <br>
      No R, eu fui tentar carregar a dll, assim:<br>
      <br>
      > <br>
      > dyn.load('contador.dll')<br>
      > <br>
      > dlls <- getLoadedDLLs()<br>
      > dlls<br>
                                                            Filename
      Dynamic.Lookup<br>
      base                                                     
      base          FALSE<br>
      utils                   
      C:/R/library/utils/libs/x64/utils.dll          FALSE<br>
      methods             
      C:/R/library/methods/libs/x64/methods.dll          FALSE<br>
      grDevices       
      C:/R/library/grDevices/libs/x64/grDevices.dll          FALSE<br>
      graphics          
      C:/R/library/graphics/libs/x64/graphics.dll          FALSE<br>
      stats                   
      C:/R/library/stats/libs/x64/stats.dll          FALSE<br>
      contador 
      C:/Users/CLEBER/Documents/code/contador/contador.dll          
      TRUE<br>
      > <br>
      > getDLLRegisteredRoutines('contador')<br>
      data frame with 0 columns and 0 rows<br>
      > <br>
      ><br>
      <br>
      Porém não há registro da subrotina 'contador'... :-(<br>
      <br>
      <br>
      Usei o comando:   .Fortran('contador_', n=as.integer( 10 ) )<br>
      <br>
      mas daí trava o R.<br>
      <br>
      <br>
      Se alguém puder me ajudar a entender isso, agradeço desde já.<br>
      <br>
      <br>
      cleber<br>
      <br>
      <br>
      <br>
      <br>
      <br>
      <br>
      <br>
      <br>
      <br>
      <br>
    </font>
  </body>
</html>