[R-br] [Dúvida] Invocar funções C++ no R
Pedro Rafael
pedro.rafael.marinho em gmail.com
Sexta Agosto 26 08:24:59 BRT 2011
Alguém tem experiência com desenvolvimento de R no Windows? Instalei o
Rtools e adicionei as variáveis de ambientes. Estou conseguindo iniciar o R
no DOS e também o gcc. Mas o Rtools não está conectado. Minha máquina é
64bits e o sistema é Windows 7.
Em 25 de agosto de 2011 17:10, Pedro Rafael
<pedro.rafael.marinho em gmail.com>escreveu:
> 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.
>
>
>
--
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/20110826/954b8591/attachment.html>
Mais detalhes sobre a lista de discussão R-br