Неопределенная ошибка ссылки при связывании библиотек R и RInside из кода C ++ с использованием компилятора g ++ в UNIX - PullRequest
3 голосов
/ 13 января 2011

Я хочу встроить R в программу на C ++.Поэтому я установил R, Rcpp и RInside также.Но я получаю много "неопределенных ссылок на" ошибки при компиляции с g ++ в UNIX.Команда, которую я даю для компиляции:

g ++ -I / path / to / R / include -I / path / to / Rcpp / include -I / path / to / RInside / include -L /путь / к / R / libs -L / путь / к / Rcpp / libs -L / путь / к / RInside / libs test.cpp -lRlapack -lRcpp -lRblas -lRInside "

test.cpp:

#include <RInside.h>                   
int main(int argc, char *argv[]) {
    RInside R(argc, argv);              // create an embedded R instance
    R["txt"] = "Hello, world!\n";   // assign a char* (string) to 'txt'
    R.parseEvalQ("cat(txt)");           // eval the init string, ignoring any returns
    exit(0);
}

Ошибки:

Undefined reference to R_ClassSymbol
Undefined reference to R_NilValue

Я получаю 110 неопределенных ошибок, аналогичных переменным R. Я установил R и другие пакеты в свое собственное местоположение, а не в местоположение по умолчанию.застрял с этой ошибкой в ​​течение 2 дней. Кажется, я все делаю правильно, как ссылки и т. д. Спасибо заранее.

Ответы [ 3 ]

2 голосов
/ 13 января 2011

RInside содержит более десяти примеров в каталоге examples/standard/ (и еще несколько для MPI, которые вы можете пока игнорировать). Попробуйте создать их и попробуйте адаптироваться из их Makefile.

Ваше сообщение об ошибке ссылки указывает на пропущенные символы из R - и в показанной вами команде отсутствует часть -lR. Попробуйте добавить это, используя (рабочие) примеры в качестве руководства.

1 голос
/ 17 января 2011

Наконец-то понял .... Все заново установил с -enable-R-shlib в другой системе. Пример работает нормально Я смогу приступить к некоторым реализациям сейчас. Спасибо

1 голос
/ 13 января 2011

(обновляется после правильного ввода кода, чтобы я мог его прочитать!)

См. http://dirk.eddelbuettel.com/code/rinside.html для некоторых полезных примеров.

...