Olá Cesar,
Obrigado pelo comentário...
Não há uma biblioteca para essa ligação. É justo a ligação que pretendia construir. Até onde entendi a ligação se daria pelo uso dessa função do R: ".C" para manuseio das funções dentro da dll. Mas de fato, imagino que a função esteja escrevendo o valor da variável (no caso uma string) mas que eu não entendi como fazer esse parâmetro ser transportado para o R (tal como foi feito no exemplo em Python).
O help da função .C diz:
######

.C(.NAME, ..., NAOK = FALSE, DUP = TRUE, PACKAGE, ENCODING)
onde:
|.NAME|   =  a character string giving the name of a C function
...    =  arguments to be passed to the foreign function.

######
Por isso tentei:   > result <- .C("FDwfGetVersion", ver=as.character() )  na esperança de que a string em C fosse "magicamente" repassada para a variável "ver", em R.

Mas não deu certo! :-(
Ainda não consegui achar nenhum exemplo na internet para elucidar esse meu probleminha!
Obrigado pela atenção
Cleber Borges



Em 19/11/2018 20:16, Cesar Rabak por (R-br) escreveu:
Se a lógica de chamar uma função C se mantém com a API do R que vc está usando, necessitar-se-ia que na chamada a FDwfGetVersion você passasse uma posição de memória para a função preencher a cadeia (a.k.a. /ponteiro/ para memória no jargão C).

O que a documentação da biblioteca R para ligação com o C diz a esse respeito?


On Sun, Nov 18, 2018 at 3:53 PM Cleber N.Borges por (R-br) <[email protected] <mailto:[email protected]>> wrote:

    olá a todos... boa tarde!

    Estou tentando aprender como usar uma DLL, via "dyn.load" e ".C"
    dentro do R.

    Fiz uns testes (abaixo tem um pedaço do que tentei) e não consegui
    entender como fazer isso.

    Se alguém puder dar uma dica de como fazer essa manipulação, seria
    de muita ajuda!

    E agradeço desde já por qualquer dica.

    Obrigado!

    Cleber

    ###

    No pdf explicando o SDK, tem detalhe da função:

    FDwfGetVersion(char szVersion[32])
    Description: Retrieves the version string. The version string is
    composed of major, minor, and build numbers (i.e.,
    “2.0.19”).


    ##############################################################

    ### No R, eu tentei:

    > dwf <- dyn.load("C:\\Program Files
    (x86)\\Digilent\\WaveForms3\\dwf")
    > is.loaded("FDwfGetVersion")
    [1] TRUE
    > result <- .C("FDwfGetVersion", ver=as.character() )
    > str(result)
    List of 1
     $ ver: chr(0)
    >

    #################################

    Mas em Python, vi que o resultado é o seguinte ( exemplos em
    Python são disponibilizados pelo fabricante)

    #################################

    >>> from ctypes import *
    >>> dwf = cdll.dwf
    >>> version = create_string_buffer(16)
    >>> dwf.FDwfGetVersion(version)
    1
    >>> print("DWF Version: "+str(version.value))
    DWF Version: 3.8.22
    >>>










---
Este email foi escaneado pelo Avast antivírus.
https://www.avast.com/antivirus
_______________________________________________
R-br mailing list
[email protected]
https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forne�a c�digo 
m�nimo reproduz�vel.

Responder a