[R-br] usar funções em C dentro do objeto DLL

Cesar Rabak cesar.rabak em gmail.com
Seg Nov 19 20:16:37 -02 2018


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) <
r-br em listas.c3sl.ufpr.br> 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
> >>>
>
>
>
>
>
>
>
>
> ------------------------------
> [image: Avast logo] <https://www.avast.com/antivirus>
>
> Este email foi escaneado pelo Avast antivírus.
> www.avast.com <https://www.avast.com/antivirus>
>
> <#m_-2461537844725911222_DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2>
> _______________________________________________
> R-br mailing list
> R-br em listas.c3sl.ufpr.br
> 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.
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20181119/3f2619f6/attachment.html>
-------------- Próxima Parte ----------
Um anexo não-texto foi limpo...
Nome: nimggbcgcgfhmldb.png
Tipo: image/png
Tamanho: 19729 bytes
Descrição: não disponível
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20181119/3f2619f6/attachment.png>
-------------- Próxima Parte ----------
Um anexo não-texto foi limpo...
Nome: nimggbcgcgfhmldb.png
Tipo: image/png
Tamanho: 19729 bytes
Descrição: não disponível
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20181119/3f2619f6/attachment-0001.png>


Mais detalhes sobre a lista de discussão R-br