Мне очень тяжело пытаться заставить Rcpp работать на моей Windows. Я загрузил Rtools, и я изменил путь к
c:\Rtools\bin; c:\Rtools\gcc-4.6.3\bin; c:\Program Files\R\R-3.0.2\bin\x64; [другие]
Затем я взял очень простой файл c++ (new.cpp), который выглядит следующим образом
include <Rcpp.h>
using namespace Rcpp;
// [[Rcpp::export]]
int timesTwo(int x) {
return x * 2;
}
Затем я перехожу на Powershell и, как было предложено для интеграции R и c++ с помощью Rcpp, D. Eddelbuettel (глава 2). Я пытаюсь скомпилировать код
PS C:\Users\RXD308\pgmcpp> PKG_CXXFLAGS='Rscript -e 'Rcpp:::CxxFlags()''\ PKG_LIBS='Rscript -e 'Rcpp:::LdFlags()''\ RCMD SHLIB new.cpp
Получение ошибки
An expression was expected after '('.
At line:1 char:43
+ PKG_CXXFLAGS='Rscript -e 'Rcpp:::CxxFlags( <<<< )''\ PKG_LIBS='Rscript -e 'Rcpp:::LdFlags()''\ RCMD SHLIB new.cpp
+ CategoryInfo : ParserError: (:) [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : ExpectedExpression
Две последние вещи
У меня есть MinGW и работаю на моем компьютере (g++ 4.6)
Я думаю, что у меня есть большая проблема с командой R в powershell. В фактах, когда я обращаюсь к powershell, и я набираю "R --version", я получаю эту ошибку
Invoke-History : Cannot locate history for commandline --version.
At line:1 char:2
+ R <<<< --version
+ CategoryInfo : ObjectNotFound: (--version:String) [Invoke-History], ArgumentException
+ FullyQualifiedErrorId : InvokeHistoryNoHistoryForCommandline,Microsoft.PowerShell.Commands.InvokeHistoryCommand
Это ошибка оболочки:
PKG_CXXFLAGS='Rscript -e 'Rcpp:::CxxFlags()''
PKG_LIBS='Rscript -e 'Rcpp:::LdFlags()''
RCMD SHLIB new.cpp
поскольку у вас есть одиночные тики внутри отдельных тиков. Посмотрите более внимательно на стр. 24 и посмотрите разницу между обращенными назад тиками и обращенными вперед клещами. Назад подразумевает выполнение.
При этом вы можете избежать этого второго уровня косвенности, просто выполнив что-то вроде Rcpp::LdFlags()
в своем сеансе R и просто скопируйте полученную строку в Makevars.
Это поможет вам скомпилировать ваш код, который является первым порядком ведения бизнеса.
Для создания дистрибутивных макияжей вы можете более внимательно изучить опубликованные решения.
Изменение: убедитесь, что вы можете ходить до запуска. Начните с чего-то вроде этого
C:\>R CMD config CXXFLAGS
-O2 -Wall -mtune=core2
C:\>
а затем перейти к Rscript
вызывающему функции Rcpp, как показано. Возможно, у вас есть проблемы с powershell; Я просто сделал это в cmd.exe
.
Rscript <<<< -e 'Rcpp:::CxxFlags()'
\ PKG_LIBS =Rscript -e 'Rcpp:::LdFlags()'
\ RCMD SHLIB new.cpp + CategoryInfo: ObjectNotFound: (PKG_CXXFLAGS = Rscript: String) [], CommandNotFoundException + FullyQualifiedErrorId: CommandNotFoundException