AshwiniKJ Ответов: 1

Я хочу запустить R-скрипт из кода C++.


R does not  get compiled into intermediate code. Can any one help on how to integrate R with C++.


Что я уже пробовал:

Попробовал запустить пример кода для вызова метода из R-скрипта. Не удалось с ошибками компоновщика.

Mohibur Rashid

вы пробовали Гугл?
http://gallery.rcpp.org/articles/r-function-from-c++/

AshwiniKJ

У меня есть отдельный R-скрипт, который читает CSV и выполняет эту задачу. Теперь мне нужно вызвать этот скрипт/метод из этого скрипта непосредственно из моего кода C++.

Вот как я пытался,

код #include "файл stdafx.ч"
#include < stdio.h>
#include & lt;string.h>
#включить "Rinternals. h"
#включить "Rembedded. h"

СЕКСП привет() {
return mkString ("Hello, world!\n");
}

int main(int argc, char * * argv) {
SEXP x;
Rf_initEmbeddedR(АГДС, агду);
x = привет();
return 0; / / x = = NULL; /* т. е. 0 при успешном выполнении */
}


Получение следующей ошибки компоновщика:

ошибка LNK2019: неразрешенный внешний символ _Rf_initEmbeddedR, на который ссылается функция _main

Richard MacCutchan

Вам нужно добавить библиотеку R, которая предоставляет эту функцию, в параметры компоновщика, в параметры проекта.

AshwiniKJ

Привет Ричард,

Я думаю, что библиотека R не создается при установке R в windows. Не могли бы вы рассказать мне, как построить эту библиотеку? Я видел R.dll в C:\Program папка Files\R\R-3.3.2\bin\i386. Но не смог найти соответствующую библиотеку. Я использую R в ОС windows 2008 и Visual Studio для компиляции C++.

Richard MacCutchan

R.dll это библиотека. Я думаю, вам нужно пойти и изучить документацию, чтобы узнать, что нужно сделать, чтобы связать ее.

1 Ответов

Рейтинг:
1

AshwiniKJ

Мы можем вызвать R-скрипт из кода C++, как показано ниже,

код #include "файл stdafx.ч"
#include <iostream>
использование пространства имен std;

int main(int argc, char * * argv) {
cout<<"Before"< & lt; endl;
система("с:\\\"программные файлы\"\\р\\р-3.3.2\\бин\\rscript C:\\R-Scripts\\test_script.R");

возвращает 0;
}

rscript - это команда, которая выполняет test_script.R.