【发布时间】:2021-10-14 13:55:42
【问题描述】:
我使用带有 R 版本 4.1.0 的 Windows 10。我想创建一个包含 Rcpp 和 RcppArmadillo 代码的包。现在 Rcpp 代码正在无错误地编译并提供答案。但是在编译包时会出现奇怪的问题。
我尝试编辑命名空间
useDynLib(sagnik, .registration = TRUE)
exportPattern("^[[:alpha:]]+")
importFrom(Rcpp,sourceCpp,evalCpp))
尝试编辑 Makevars.win
CXX_STD = CXX11
PKG_CXXFLAGS = $(SHLIB_OPENMP_CXXFLAGS)
PKG_LIBS = $(shell $(R_HOME)/bin${R_ARCH_BIN}/Rscript.exe -e "Rcpp:::LdFlags()") $(LAPACK_LIBS) $(BLAS_LIBS) $(FLIBS)
和 Makevars
CXX_STD = CXX11
PKG_CXXFLAGS = $(SHLIB_OPENMP_CXXFLAGS)
PKG_LIBS = $(shell $(R_HOME)/bin/Rscript -e "Rcpp:::LdFlags()") $(LAPACK_LIBS) $(BLAS_LIBS) $(FLIBS)
但使用 CLEAN & REBUILD 时仍显示以下错误
==> Rcpp::compileAttributes()
* Updated src/RcppExports.cpp
* Updated R/RcppExports.R
==> Rcmd.exe INSTALL --preclean --no-multiarch --with-keep.source hijibijibij
* installing to library 'C:/Users/sagni/Documents/R/win-library/4.1'
* installing *source* package 'SBHSdemo' ...
** using staged installation
** libs
/mingw64/bin/g++ -std=gnu++11 -I"C:/PROGRA~1/R/R-4.1.0/include" -DNDEBUG -I'C:/Users/sagni/Documents/R/win-library/4.1/Rcpp/include' -I'C:/Users/sagni/Documents/R/win-library/4.1/RcppArmadillo/include' -fopenmp -O2 -Wall -mfpmath=sse -msse2 -mstackrealign -c FHSagnik.cpp -o FHSagnik.o
/mingw64/bin/g++ -std=gnu++11 -I"C:/PROGRA~1/R/R-4.1.0/include" -DNDEBUG -I'C:/Users/sagni/Documents/R/win-library/4.1/Rcpp/include' -I'C:/Users/sagni/Documents/R/win-library/4.1/RcppArmadillo/include' -fopenmp -O2 -Wall -mfpmath=sse -msse2 -mstackrealign -c RcppExports.cpp -o RcppExports.o
/mingw64/bin/g++ -shared -s -static-libgcc -o SBHSdemo.dll tmp.def FHSagnik.o RcppExports.o -LC:/PROGRA~1/R/R-4.1.0/bin/x64 -lRlapack -LC:/PROGRA~1/R/R-4.1.0/bin/x64 -lRblas -lgfortran -lm -lquadmath -LC:/PROGRA~1/R/R-4.1.0/bin/x64 -lR
C:/RBuildTools/4.0/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/8.3.0/../../../../x86_64-w64-mingw32/bin/ld.exe: FHSagnik.o:FHSagnik.cpp:(.text+0x2ff): undefined reference to `omp_get_num_threads'
C:/RBuildTools/4.0/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/8.3.0/../../../../x86_64-w64-mingw32/bin/ld.exe: FHSagnik.o:FHSagnik.cpp:(.text+0x306): undefined reference to `omp_get_thread_num'
C:/RBuildTools/4.0/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/8.3.0/../../../../x86_64-w64-mingw32/bin/ld.exe: FHSagnik.o:FHSagnik.cpp:(.text+0xd43): undefined reference to `omp_in_parallel'
C:/RBuildTools/4.0/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/8.3.0/../../../../x86_64-w64-mingw32/bin/ld.exe: FHSagnik.o:FHSagnik.cpp:(.text+0xd58): undefined reference to `omp_get_max_threads'
C:/RBuildTools/4.0/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/8.3.0/../../../../x86_64-w64-mingw32/bin/ld.exe: FHSagnik.o:FHSagnik.cpp:(.text+0xfa1): undefined reference to `GOMP_parallel'
collect2.exe: error: ld returned 1 exit status
no DLL was created
ERROR: compilation failed for package 'SBHSdemo'
谁能告诉我该怎么做?
【问题讨论】:
标签: c++ r windows gcc r-package