<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <div class="moz-cite-prefix">Oi Cleber, <br>
      <br>
      Nao sei qual foi o problema. So' gostaria de questionar: porque
      voce esta lendo o tamanho do vetor? <br>
      <br>
      Ate onde sei, e' melhor declarar objetos no R e passa-los a
      subrotina. No seu caso, poderia ser <br>
      <br>
      <br>
              subroutine contador(n,r)<br>
              ! Compilar como dynamic library para uso no R<br>
              integer n, i<br>
              integer r(n)<br>
              !!!!!!!!!!!!!!!!!!!!!!!!!!!!!<br>
              do i = 1, n<br>
                  r(i) = i<br>
              enddo<br>
              !!!!!!!!!!!!!!!!!!!!!!!!!!!!!<br>
              end subroutine<br>
      <br>
      e para mim funcionou bem (em Linux, of course) :)<br>
      <br>
      On 10/03/2013 01:16 AM, Cleber N.Borges wrote:<br>
    </div>
    <blockquote cite="mid:524CA955.9010605@yahoo.com.br" type="cite">
      <meta http-equiv="content-type" content="text/html;
        charset=ISO-8859-1">
      <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> <br>
      <fieldset class="mimeAttachmentHeader"></fieldset>
      <br>
      <pre wrap="">_______________________________________________
R-br mailing list
<a class="moz-txt-link-abbreviated" href="mailto:R-br@listas.c3sl.ufpr.br">R-br@listas.c3sl.ufpr.br</a>
<a class="moz-txt-link-freetext" href="https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br">https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br</a>
Leia o guia de postagem (<a class="moz-txt-link-freetext" href="http://www.leg.ufpr.br/r-br-guia">http://www.leg.ufpr.br/r-br-guia</a>) e forneça código mínimo reproduzível.</pre>
    </blockquote>
    <br>
  </body>
</html>