
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@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-tp37681... 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.