我目前正在尝试使用RInside
在回溯测试中做一些情节,灵感来自Saving Lattice Plots with RInside and Rcpp。我通过编译RInside
来解决问题。在深入研究我的问题之前,我已经查过了前三个问题:
但它不会解决我的问题。按照标准步骤,我安装最新的RInside
包,并执行下载的Makefile.win
二进制文件中包含的以下makefile RInside
:
## -*- mode: makefile; tab-width: 8; -*-
##
## Simple Makefile for Windows
##
## Note that the libRInside library encodes the value of R_HOME found
## at compilation. So if you use the CRAN package of RInside, its value
## may not correspond to where you have R installed. One quick fix is
## export the appropriate value of R_HOME, eg ony my work machine
## set R_HOME=C:\opt\R-current
## The other is to re-install RInside from source on your machine.
## Either one should allow you to actually run the binaries created
## with this Makefile
## This version is fairly directly derived from the Unix versions
## You may have to set R_HOME manually if this does not work
## It requires Rtools in the path -- as does all R package building
#R_HOME := $(shell R RHOME | sed -e "s|\\\\|\/|g")
R_HOME := "C:/R/R-3.1.3"
## You may have to set this to one of the two values below to enforce a particular
## architecture in case the autodetection in the next line does not work correctly
##R_ARCH := --arch $(shell echo 'cat(.Platform$$r_arch)' | R --vanilla --slave)
##R_ARCH := --arch i386
R_ARCH := --arch x64
## You may need to set R_LIBS_USER if Rcpp or RInside are installed where R does not see them by default
R_LIBS_USER := "C:/R/R-3.1.3/library"
sources := $(wildcard *.cpp)
programs := $(sources:.cpp=)
## include headers and libraries for R
RCPPFLAGS := $(shell $(R_HOME)/bin/R $(R_ARCH) CMD config --cppflags)
RLDFLAGS := $(shell $(R_HOME)/bin/R $(R_ARCH) CMD config --ldflags)
RBLAS := $(shell $(R_HOME)/bin/R $(R_ARCH) CMD config BLAS_LIBS)
RLAPACK := $(shell $(R_HOME)/bin/R $(R_ARCH) CMD config LAPACK_LIBS)
## include headers and libraries for Rcpp interface classes
RCPPINCL := $(shell echo 'Rcpp:::CxxFlags()' | $(R_HOME)/bin/R $(R_ARCH) --vanilla --slave)
RCPPLIBS := $(shell echo 'Rcpp:::LdFlags()' | $(R_HOME)/bin/R $(R_ARCH) --vanilla --slave)
## include headers and libraries for RInside embedding classes
RINSIDEINCL := $(shell echo 'RInside:::CxxFlags()' | $(R_HOME)/bin/R $(R_ARCH) --vanilla --slave)
RINSIDELIBS := $(shell echo 'RInside:::LdFlags()' | $(R_HOME)/bin/R $(R_ARCH) --vanilla --slave)
## compiler etc settings used in default make rules
CXX := $(shell $(R_HOME)/bin/R $(R_ARCH) CMD config CXX)
CPPFLAGS := -Wall $(shell $(R_HOME)/bin/R $(R_ARCH) CMD config CPPFLAGS)
CXXFLAGS := $(RCPPFLAGS) $(RCPPINCL) $(RINSIDEINCL) $(shell $(R_HOME)/bin/R $(R_ARCH) CMD config CXXFLAGS)
LDFLAGS = -s
LDLIBS := $(RLDFLAGS) $(RBLAS) $(RLAPACK) $(RINSIDELIBS) $(RCPPLIBS)
CC := $(shell $(R_HOME)/bin/R $(R_ARCH) CMD config CXX)
all : $(programs)
clean:
rm -vf $(programs)
checkR:
echo "R is at $(R_HOME)"
我在Makefile.win中进行的更改使其可执行R_HOME := "C:/R/R-3.1.3"
,R_LIBS_USER := "C:/R/R-3.1.3/library"
,R_ARCH := --arch x64
,并按照Problem with compiling RInside examples under Windows的想法更改了{{1 as:
RProfile.site
运行# Things you might want to change
# options(papersize="a4")
# options(editor="notepad")
# options(pager="internal")
# set the default help type
# options(help_type="text")
options(help_type="html")
# set a site library
.Library.site <- file.path("C:/R/R-3.1.3/library")
# set a CRAN mirror
# local({r <- getOption("repos")
# r["CRAN"] <- "http://my.local.cran"
# options(repos=r)})
# Give a fortune cookie, but only to interactive sessions
# (This would need the fortunes package to be installed.)
# if (interactive())
# fortunes::fortune()
,我将cmd复制为:
make -f Marfile.win
但是当我尝试其中一个例子时,请说:
c:\R\R-3.1.3\library\RInside\examples\standard>make -f Makefile.win
g++ -m64 -IC:/R/R-3.1.3/include -IC:/R/R-3.1.3/include/x64 -IC:/R/R-3.1.3/librar
y/Rcpp/include -IC:/R/R-3.1.3/library/RInside/include -O2 -Wall -mtune=core2 -Wa
ll -s rinside_callbacks0.cpp -LC:/R/R-3.1.3/bin/x64 -lR -lm -LC:/R/R-3.1.3/
bin/x64 -lRblas -LC:/R/R-3.1.3/bin/x64 -lRlapack "C:/R/R-3.1.3/library/RInside/l
ib/x64/libRInside.a" -o rinside_callbacks0
g++ -m64 -IC:/R/R-3.1.3/include -IC:/R/R-3.1.3/include/x64 -IC:/R/R-3.1.3/librar
y/Rcpp/include -IC:/R/R-3.1.3/library/RInside/include -O2 -Wall -mtune=core2 -Wa
ll -s rinside_callbacks1.cpp -LC:/R/R-3.1.3/bin/x64 -lR -lm -LC:/R/R-3.1.3/
bin/x64 -lRblas -LC:/R/R-3.1.3/bin/x64 -lRlapack "C:/R/R-3.1.3/library/RInside/l
ib/x64/libRInside.a" -o rinside_callbacks1
g++ -m64 -IC:/R/R-3.1.3/include -IC:/R/R-3.1.3/include/x64 -IC:/R/R-3.1.3/librar
y/Rcpp/include -IC:/R/R-3.1.3/library/RInside/include -O2 -Wall -mtune=core2 -Wa
ll -s rinside_module_sample0.cpp -LC:/R/R-3.1.3/bin/x64 -lR -lm -LC:/R/R-3.
1.3/bin/x64 -lRblas -LC:/R/R-3.1.3/bin/x64 -lRlapack "C:/R/R-3.1.3/library/RInsi
de/lib/x64/libRInside.a" -o rinside_module_sample0
g++ -m64 -IC:/R/R-3.1.3/include -IC:/R/R-3.1.3/include/x64 -IC:/R/R-3.1.3/librar
y/Rcpp/include -IC:/R/R-3.1.3/library/RInside/include -O2 -Wall -mtune=core2 -Wa
ll -s rinside_sample0.cpp -LC:/R/R-3.1.3/bin/x64 -lR -lm -LC:/R/R-3.1.3/bin
/x64 -lRblas -LC:/R/R-3.1.3/bin/x64 -lRlapack "C:/R/R-3.1.3/library/RInside/lib/
x64/libRInside.a" -o rinside_sample0
g++ -m64 -IC:/R/R-3.1.3/include -IC:/R/R-3.1.3/include/x64 -IC:/R/R-3.1.3/librar
y/Rcpp/include -IC:/R/R-3.1.3/library/RInside/include -O2 -Wall -mtune=core2 -Wa
ll -s rinside_sample1.cpp -LC:/R/R-3.1.3/bin/x64 -lR -lm -LC:/R/R-3.1.3/bin
/x64 -lRblas -LC:/R/R-3.1.3/bin/x64 -lRlapack "C:/R/R-3.1.3/library/RInside/lib/
x64/libRInside.a" -o rinside_sample1
g++ -m64 -IC:/R/R-3.1.3/include -IC:/R/R-3.1.3/include/x64 -IC:/R/R-3.1.3/librar
y/Rcpp/include -IC:/R/R-3.1.3/library/RInside/include -O2 -Wall -mtune=core2 -Wa
ll -s rinside_sample10.cpp -LC:/R/R-3.1.3/bin/x64 -lR -lm -LC:/R/R-3.1.3/bi
n/x64 -lRblas -LC:/R/R-3.1.3/bin/x64 -lRlapack "C:/R/R-3.1.3/library/RInside/lib
/x64/libRInside.a" -o rinside_sample10
g++ -m64 -IC:/R/R-3.1.3/include -IC:/R/R-3.1.3/include/x64 -IC:/R/R-3.1.3/librar
y/Rcpp/include -IC:/R/R-3.1.3/library/RInside/include -O2 -Wall -mtune=core2 -Wa
ll -s rinside_sample11.cpp -LC:/R/R-3.1.3/bin/x64 -lR -lm -LC:/R/R-3.1.3/bi
n/x64 -lRblas -LC:/R/R-3.1.3/bin/x64 -lRlapack "C:/R/R-3.1.3/library/RInside/lib
/x64/libRInside.a" -o rinside_sample11
g++ -m64 -IC:/R/R-3.1.3/include -IC:/R/R-3.1.3/include/x64 -IC:/R/R-3.1.3/librar
y/Rcpp/include -IC:/R/R-3.1.3/library/RInside/include -O2 -Wall -mtune=core2 -Wa
ll -s rinside_sample12.cpp -LC:/R/R-3.1.3/bin/x64 -lR -lm -LC:/R/R-3.1.3/bi
n/x64 -lRblas -LC:/R/R-3.1.3/bin/x64 -lRlapack "C:/R/R-3.1.3/library/RInside/lib
/x64/libRInside.a" -o rinside_sample12
g++ -m64 -IC:/R/R-3.1.3/include -IC:/R/R-3.1.3/include/x64 -IC:/R/R-3.1.3/librar
y/Rcpp/include -IC:/R/R-3.1.3/library/RInside/include -O2 -Wall -mtune=core2 -Wa
ll -s rinside_sample13.cpp -LC:/R/R-3.1.3/bin/x64 -lR -lm -LC:/R/R-3.1.3/bi
n/x64 -lRblas -LC:/R/R-3.1.3/bin/x64 -lRlapack "C:/R/R-3.1.3/library/RInside/lib
/x64/libRInside.a" -o rinside_sample13
g++ -m64 -IC:/R/R-3.1.3/include -IC:/R/R-3.1.3/include/x64 -IC:/R/R-3.1.3/librar
y/Rcpp/include -IC:/R/R-3.1.3/library/RInside/include -O2 -Wall -mtune=core2 -Wa
ll -s rinside_sample14.cpp -LC:/R/R-3.1.3/bin/x64 -lR -lm -LC:/R/R-3.1.3/bi
n/x64 -lRblas -LC:/R/R-3.1.3/bin/x64 -lRlapack "C:/R/R-3.1.3/library/RInside/lib
/x64/libRInside.a" -o rinside_sample14
g++ -m64 -IC:/R/R-3.1.3/include -IC:/R/R-3.1.3/include/x64 -IC:/R/R-3.1.3/librar
y/Rcpp/include -IC:/R/R-3.1.3/library/RInside/include -O2 -Wall -mtune=core2 -Wa
ll -s rinside_sample15.cpp -LC:/R/R-3.1.3/bin/x64 -lR -lm -LC:/R/R-3.1.3/bi
n/x64 -lRblas -LC:/R/R-3.1.3/bin/x64 -lRlapack "C:/R/R-3.1.3/library/RInside/lib
/x64/libRInside.a" -o rinside_sample15
g++ -m64 -IC:/R/R-3.1.3/include -IC:/R/R-3.1.3/include/x64 -IC:/R/R-3.1.3/librar
y/Rcpp/include -IC:/R/R-3.1.3/library/RInside/include -O2 -Wall -mtune=core2 -Wa
ll -s rinside_sample16.cpp -LC:/R/R-3.1.3/bin/x64 -lR -lm -LC:/R/R-3.1.3/bi
n/x64 -lRblas -LC:/R/R-3.1.3/bin/x64 -lRlapack "C:/R/R-3.1.3/library/RInside/lib
/x64/libRInside.a" -o rinside_sample16
g++ -m64 -IC:/R/R-3.1.3/include -IC:/R/R-3.1.3/include/x64 -IC:/R/R-3.1.3/librar
y/Rcpp/include -IC:/R/R-3.1.3/library/RInside/include -O2 -Wall -mtune=core2 -Wa
ll -s rinside_sample17.cpp -LC:/R/R-3.1.3/bin/x64 -lR -lm -LC:/R/R-3.1.3/bi
n/x64 -lRblas -LC:/R/R-3.1.3/bin/x64 -lRlapack "C:/R/R-3.1.3/library/RInside/lib
/x64/libRInside.a" -o rinside_sample17
C:/R/R-3.1.3/library/Rcpp/include/Rcpp/protection/Armor.h:38:23: warning: inline
function 'Rcpp::Armor<T>& Rcpp::Armor<T>::operator=(const U&) [with U = SEXPREC
*, T = SEXPREC*, Rcpp::Armor<T> = Rcpp::Armor<SEXPREC*>]' used but never defined
[enabled by default]
g++ -m64 -IC:/R/R-3.1.3/include -IC:/R/R-3.1.3/include/x64 -IC:/R/R-3.1.3/librar
y/Rcpp/include -IC:/R/R-3.1.3/library/RInside/include -O2 -Wall -mtune=core2 -Wa
ll -s rinside_sample2.cpp -LC:/R/R-3.1.3/bin/x64 -lR -lm -LC:/R/R-3.1.3/bin
/x64 -lRblas -LC:/R/R-3.1.3/bin/x64 -lRlapack "C:/R/R-3.1.3/library/RInside/lib/
x64/libRInside.a" -o rinside_sample2
g++ -m64 -IC:/R/R-3.1.3/include -IC:/R/R-3.1.3/include/x64 -IC:/R/R-3.1.3/librar
y/Rcpp/include -IC:/R/R-3.1.3/library/RInside/include -O2 -Wall -mtune=core2 -Wa
ll -s rinside_sample3.cpp -LC:/R/R-3.1.3/bin/x64 -lR -lm -LC:/R/R-3.1.3/bin
/x64 -lRblas -LC:/R/R-3.1.3/bin/x64 -lRlapack "C:/R/R-3.1.3/library/RInside/lib/
x64/libRInside.a" -o rinside_sample3
g++ -m64 -IC:/R/R-3.1.3/include -IC:/R/R-3.1.3/include/x64 -IC:/R/R-3.1.3/librar
y/Rcpp/include -IC:/R/R-3.1.3/library/RInside/include -O2 -Wall -mtune=core2 -Wa
ll -s rinside_sample4.cpp -LC:/R/R-3.1.3/bin/x64 -lR -lm -LC:/R/R-3.1.3/bin
/x64 -lRblas -LC:/R/R-3.1.3/bin/x64 -lRlapack "C:/R/R-3.1.3/library/RInside/lib/
x64/libRInside.a" -o rinside_sample4
g++ -m64 -IC:/R/R-3.1.3/include -IC:/R/R-3.1.3/include/x64 -IC:/R/R-3.1.3/librar
y/Rcpp/include -IC:/R/R-3.1.3/library/RInside/include -O2 -Wall -mtune=core2 -Wa
ll -s rinside_sample5.cpp -LC:/R/R-3.1.3/bin/x64 -lR -lm -LC:/R/R-3.1.3/bin
/x64 -lRblas -LC:/R/R-3.1.3/bin/x64 -lRlapack "C:/R/R-3.1.3/library/RInside/lib/
x64/libRInside.a" -o rinside_sample5
g++ -m64 -IC:/R/R-3.1.3/include -IC:/R/R-3.1.3/include/x64 -IC:/R/R-3.1.3/librar
y/Rcpp/include -IC:/R/R-3.1.3/library/RInside/include -O2 -Wall -mtune=core2 -Wa
ll -s rinside_sample6.cpp -LC:/R/R-3.1.3/bin/x64 -lR -lm -LC:/R/R-3.1.3/bin
/x64 -lRblas -LC:/R/R-3.1.3/bin/x64 -lRlapack "C:/R/R-3.1.3/library/RInside/lib/
x64/libRInside.a" -o rinside_sample6
g++ -m64 -IC:/R/R-3.1.3/include -IC:/R/R-3.1.3/include/x64 -IC:/R/R-3.1.3/librar
y/Rcpp/include -IC:/R/R-3.1.3/library/RInside/include -O2 -Wall -mtune=core2 -Wa
ll -s rinside_sample7.cpp -LC:/R/R-3.1.3/bin/x64 -lR -lm -LC:/R/R-3.1.3/bin
/x64 -lRblas -LC:/R/R-3.1.3/bin/x64 -lRlapack "C:/R/R-3.1.3/library/RInside/lib/
x64/libRInside.a" -o rinside_sample7
g++ -m64 -IC:/R/R-3.1.3/include -IC:/R/R-3.1.3/include/x64 -IC:/R/R-3.1.3/librar
y/Rcpp/include -IC:/R/R-3.1.3/library/RInside/include -O2 -Wall -mtune=core2 -Wa
ll -s rinside_sample8.cpp -LC:/R/R-3.1.3/bin/x64 -lR -lm -LC:/R/R-3.1.3/bin
/x64 -lRblas -LC:/R/R-3.1.3/bin/x64 -lRlapack "C:/R/R-3.1.3/library/RInside/lib/
x64/libRInside.a" -o rinside_sample8
g++ -m64 -IC:/R/R-3.1.3/include -IC:/R/R-3.1.3/include/x64 -IC:/R/R-3.1.3/librar
y/Rcpp/include -IC:/R/R-3.1.3/library/RInside/include -O2 -Wall -mtune=core2 -Wa
ll -s rinside_sample9.cpp -LC:/R/R-3.1.3/bin/x64 -lR -lm -LC:/R/R-3.1.3/bin
/x64 -lRblas -LC:/R/R-3.1.3/bin/x64 -lRlapack "C:/R/R-3.1.3/library/RInside/lib/
x64/libRInside.a" -o rinside_sample9
g++ -m64 -IC:/R/R-3.1.3/include -IC:/R/R-3.1.3/include/x64 -IC:/R/R-3.1.3/librar
y/Rcpp/include -IC:/R/R-3.1.3/library/RInside/include -O2 -Wall -mtune=core2 -Wa
ll -s rinside_test0.cpp -LC:/R/R-3.1.3/bin/x64 -lR -lm -LC:/R/R-3.1.3/bin/x
64 -lRblas -LC:/R/R-3.1.3/bin/x64 -lRlapack "C:/R/R-3.1.3/library/RInside/lib/x6
4/libRInside.a" -o rinside_test0
g++ -m64 -IC:/R/R-3.1.3/include -IC:/R/R-3.1.3/include/x64 -IC:/R/R-3.1.3/librar
y/Rcpp/include -IC:/R/R-3.1.3/library/RInside/include -O2 -Wall -mtune=core2 -Wa
ll -s rinside_test1.cpp -LC:/R/R-3.1.3/bin/x64 -lR -lm -LC:/R/R-3.1.3/bin/x
64 -lRblas -LC:/R/R-3.1.3/bin/x64 -lRlapack "C:/R/R-3.1.3/library/RInside/lib/x6
4/libRInside.a" -o rinside_test1
g++ -m64 -IC:/R/R-3.1.3/include -IC:/R/R-3.1.3/include/x64 -IC:/R/R-3.1.3/librar
y/Rcpp/include -IC:/R/R-3.1.3/library/RInside/include -O2 -Wall -mtune=core2 -Wa
ll -s rinside_test2.cpp -LC:/R/R-3.1.3/bin/x64 -lR -lm -LC:/R/R-3.1.3/bin/x
64 -lRblas -LC:/R/R-3.1.3/bin/x64 -lRlapack "C:/R/R-3.1.3/library/RInside/lib/x6
4/libRInside.a" -o rinside_test2
它出现以下错误:
#include <RInside.h> // for the embedded R via RInside
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);
}
我认为可能缺少一些依赖,所以我添加 # Rcpp::sourceCpp('C:/R/R-3.1.3/library/RInside/examples/standard/rinside_sample0.cpp')
g++ -m64 -I"C:/R/R-31~1.3/include" -DNDEBUG -I"C:/R/R-3.1.3/library/Rcpp/include" -I"C:/R/R-3.1.3/library/RInside/examples/standard" -I"d:/RCompile/CRANpkg/extralibs64/local/include" -O2 -Wall -mtune=core2 -c rinside_sample0.cpp -o rinside_sample0.o
rinside_sample0.cpp:10:74: fatal error: RInside.h: No such file or directory
compilation terminated.
make: *** [rinside_sample0.o] Error 1
Warning message:
running command 'make -f "C:/R/R-31~1.3/etc/x64/Makeconf" -f "C:/R/R-31~1.3/share/make/winshlib.mk" SHLIB_LDFLAGS='$(SHLIB_CXXLDFLAGS)' SHLIB_LD='$(SHLIB_CXXLD)' SHLIB="sourceCpp_78644.dll" WIN=64 TCLBIN=64 OBJECTS="rinside_sample0.o"' had status 2
Error in Rcpp::sourceCpp("C:/R/R-3.1.3/library/RInside/examples/standard/rinside_sample0.cpp") :
Error 1 occurred building shared library.
,这也没有帮助,错误列举如下:
// [[Rcpp::depends(RInside)]]
希望有人有一些宝贵的见解可以分享!感谢
答案 0 :(得分:3)
错误非常明确:RInside.h: No such file or directory
您需要弄清楚为什么-I....
标头目录的RInside
指令无法通过,或者该目录是否消失,或者......
这些构建说明已有几年历史且经过合理的测试:它们通常可以正常工作。