2014-01-25 4 views
1

Я использую R 3.0.2 под Windows 7 (32 бит) и имеет TDM-GCC-32 (gcc (tdm-2) 4.8.1) в пути.Как использовать Rcpp с TDM-gcc 4.8.1?

Когда я пытаюсь использовать cppFunction, я получаю ошибку: сообщение

library(inline) 
library(Rcpp) 
src <- ' 
SEXP hellofun(){ 
std::vector<std::string> s; 
    s.push_back("hello"); 
s.push_back("world"); 
return Rcpp::wrap(s); 
}' 
hello_fun <- cppFunction(src) 

Ошибка:

Error in inDL(x, as.logical(local), as.logical(now), ...) (from file1c8c8c929f5.cpp.R#1) : 
    unable to load shared object 'C:/Users/ssss11/AppData/Local/Temp/RtmpeywSmo/sourcecpp_1c8c47543253/sourceCpp_60750.dll': 
    LoadLibrary failure: Invalid access to memory location 

Однако, когда я запускаю пример (cfuntion), это удается.

library(inline) 
example(cfunction) 

Как решить эту проблему?

ответ

2

Я понятия не имею, что такое TDM-GCC-32 (gcc (tdm-2) 4.8.1), но в нашей документации неоднократно подчеркивается, что один и только один компилятор поддерживает Windows: тот, который поставляется с версией Rtools, соответствующей вашей версии R.

Теперь «TDM-gcc-32» может быть совместимым с функциями, но если вы хотите его использовать, вам, вероятно, придется перестроить ваш весь стек R (то есть сам R, все пакеты, ...) с Это.

Сот это может быть лучше подождать R ядра/CRAN обновить Rtools до версии новее, чем GCC-4.6. *

+0

Я заново компилировать Rcpp из источника, и она работает. – Shuguang

+1

Это интересно - спасибо за попытку. Возможно, вы могли бы суммировать ваши шаги в сообщении на r-devel. Там могут быть другие пользователи Windows, которые хотели бы попробовать новый компилятор. –

+0

@Shuguang Я тоже перекомпилировал Rcpp и его «зависимости», используя недавний g ++ (здесь 4.8.2). Как вы тестировали и подтверждали, что обработка исключений работает так, как должна, из Rcpp-источников? – Thell

Смежные вопросы