[R-br] [Dúvida] Invocar funções C++ no R

Pedro Rafael pedro.rafael.marinho em gmail.com
Quinta Agosto 25 17:10:51 BRT 2011


Eu tava fazendo seguindo esse vídeo tutorial:
http://www.youtube.com/watch?v=WIihUvQwYTA

Em 25 de agosto de 2011 17:05, beniltoncarvalho [via R-br] <
ml-node+3769255-1291827254-223914 em n4.nabble.com> escreveu:

> Voce vai precisar ler mesmo o material do manual e, para uma versao
> expressa, ver as notas de aula que postei no topico ao qual referi-me
> anteriormente.
>
> 1) Minha recomendacao (e de todo mundo que usa R+C) e' vc gerar a
> biblioteca usando:
>
> R CMD SHLIB arquivo.c
>
> 2) Quando o R conversa com o C, tudo o que o C enxerga sao ponteiros.
> Entao, toda a comunicacao C <-> R deve ser feita via ponteiros.
>
> Dito isso, seu programa precisa ser ligeiramente modificado:
>
>
> /* INICIO */
> /*
>   Programa: exfun.c
>   Objetivo; Primeiro exemplo de uso de funcao
>   Autor: Adriano Cruz
>   Data: 12/10/97
> */
> #include<stdio.h>
>
> /* Prototipo da funcao */
> int soma(int, int);
>
>
> /* Funcao Principal */
> void fPrincipal(double *resultado)
> {
>      int a=5, b=9;
>      resultado[0] = soma(a,b);
> }
>
> /* Definicao da funcao */
> int soma(int a, int b)
> {
>     return a+b;
> }
>
> /* FIM */
>
> Depois disso, compile-o usando:
>
> R CMD SHLIB arquivo.c
>
> (preste atencao qual arquivo sera' gerado, pq nao to muito certo de
> que em Windows sera' um .so, imagino que seja um DLL).
>
> Carregue o R e use:
>
> dyn.load("arquivo.dll")
> x = .C("fPrincipal", double(1))
>
> Abaixo e' o q eu tenho:
>
> > dyn.load("teste.so")
> > x = .C("fPrincipal", as.double(1))
> > x
> [[1]]
> [1] 14
>
> O segundo argumento em .C() que vc ve, e' reservando, no R, memoria
> para 1 numero real, que o programa em C usa para gravar a resposta.
>
> b
> _______________________________________________
> R-br mailing list
> [hidden email] <http://user/SendEmail.jtp?type=node&node=3769255&i=0>
> 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.
>
>
> ------------------------------
>  If you reply to this email, your message will be added to the discussion
> below:
>
> http://r-br.2285057.n4.nabble.com/R-br-Duvida-Invocar-funcoes-C-no-R-tp3768159p3769255.html
>  To unsubscribe from R-br, click here<http://r-br.2285057.n4.nabble.com/template/NamlServlet.jtp?macro=unsubscribe_by_code&node=3357982&code=cGVkcm8ucmFmYWVsLm1hcmluaG9AZ21haWwuY29tfDMzNTc5ODJ8NTAyMjI0MDYw>.
>
>



-- 
Saudações,
Pedro Rafael Diniz Marinho.
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20110825/d8db8ba4/attachment.html>


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