2011-12-22 22 views
5

Necesito ejecutar funciones estadísticas desde R dentro de mi código C++. ¿Hay alguna manera de llamarlos desde mi código C++? Estoy usando VS 2005, ¿necesito incluir algún archivo de encabezado o vincular cualquier biblioteca? Instalé R usando el instalador estándar de Windows proporcionado desde su sitio web.Llamar a funciones R desde VC++

Saludos,

+2

yo encontramos este que parece prometedora EDITAR http://dirk.eddelbuettel.com/code/rcpp.html: Se trata de llamar a C++ desde R, bobo :(EDIT: ¡Espera! He encontrado algo http://dirk.eddelbuettel.com/code/rinside.html :) :) –

+0

Gracias Carl, ya he investigado sobre Rcpp y RInside, pero no dan lo suficiente detalles para trabajar con VS. Esperaba que hubiera alguien que usara R con VS y me dijera qué hacer. – Jawad

+0

Quizás esto podría arrojar alguna luz http://www.google.co.uk/url?sa=t&rct=j&q=r%20%2Bc%2B%2B&source=web&cd=9&ved=0CGAQtwIwCA&url=http%3A%2F%2Fwww .youtube.com% 2Fwatch% 3Fv% 3DUZkaZhsOfT4 & ei = 403zTtmxIabh4QTOr7mSCA & usg = AFQjCNGcDNvkB9SwhMsMRj20BvcTYsutCQ –

Respuesta

4

Brevemente:

  • Como se ha dicho con bastante frecuencia, R en sí no construye bajo VS * hacer la vinculación de código duro C-pero-posible y código C++ imposible (ya que la información del encabezado de la función no está estandarizada).

  • Tanto Rcpp como RInside funcionan perfectamente bien en Windows, teniendo en cuenta la cadena de herramientas estándar de Windows . (RInside tenía un error, pero esto ahora se fija.)

    El RCPP FAQ tiene más que decir acerca de VS * (es decir, que no se puede esperar que este a trabajar si R sí mismo no puede trabajar con el compilador)

  • Si usted debe usar 0 *, entonces su mejor opción puede ser un acoplamiento más flojo mediante la conexión en red y el uso de Rserve.

    Si puede cambiar los compiladores, Rcpp/RInside puede ser de su interés; y el resto de la API R también está a su disposición.

  • Rcpp et al tienen una copiosa documentación, incluyendo un pdf de introducción de Rcpp (que es también artículo revisado por pares) y las preguntas frecuentes de Rcpp antes mencionadas, así como una lista de correo dedicada.

Y no publique mensajes cruzados. También acabo de responder este on r-help.

+0

Gracias Dirk, acabo de recibir la respuesta en r-help también. Supongo que tendré que usar algo que no sea R entonces. – Jawad

+5

... o algo diferente a Microsoft. –

-1

La versión binaria de Rserve proporcionada en https://rforge.net/Rserve/files/ no se compila bajo Microsoft Visual C++. En el archivo ReadMe.txt, el autor indica que no hay configuración para Windows, pero hay un Makefile.win especial. No tuvimos éxito en construirlo, al usar "make -f Makefile.win", ya que no se proporciona ningún archivo config.h (solo config.h.in).

  1. Así, comente la siguiente línea en el archivo de cabecera Rsrv.h:


    // # include "config .h"


En esta etapa , se genera el siguiente error:


rsrv .h (384): error fatal C1189: # error: "No se puede determinar el endianness. Asegúrese de que config .h esté incluido o _ _ {BIG | POCO} _ENDIAN__ se define."


  1. resolver los problemas relacionados con el orden de bits. En el archivo de cabecera RSVR.h, reemplace:

/* Windows is little-endian is most cases, anywhere else we're stuck*/ 
# error "Cannot determine endianness. Make sure config.h is included or __{BIG|LITTLE}_ENDIAN__ is defined ." 
# endif 

por:


/********* MODIFICATION *************/ 

/* # error "Cannot determine endianness. Make sure config.h is included or __{BIG|LITTLE}_ENDIAN__ is defined ." */ 
/************************************/ 
#define _BIG_ENDIAN (*(uint16_t *)?\xff? < 0x100) 

  1. Asegúrese de que los vínculos entorno de construcción a el archivo Ws2_32.lib de la biblioteca Winsock. Para ello, agregue las siguientes líneas de código antes de la función principal:

/* indicate to the linker that the Ws2_32.lib file is needed */ 
#pragma comment(lib, "Ws2_32.lib") 

Las aplicaciones que utilizan Winsock debe estar vinculado con el archivo de biblioteca Ws2_32.lib.

Para más detalles sobre R y Microsoft Visual C++ a través de la integración Rserve, visite https://www.researchgate.net/publication/305789407_Rserve_for_Windows_case_of_R_and_Microsoft_Visual_C_integration

+0

¡Bienvenido a Stack Overflow! Si bien esto podría responder teóricamente a la pregunta, [sería preferible] (// meta.stackoverflow.com/q/8259) incluir aquí las partes esenciales de la respuesta y proporcionar el enlace de referencia. –