Я пытаюсь включить библиотеку qpOASES C++ в проект Rcpp, который я создаю в RStudio.Включая библиотеки сторонних разработчиков в проект R
Я просмотрел папки для написания R и различные виньетки Rcpp. Я нашел это post, который ссылается на this заархивированный разговор. Используя это в качестве руководства, я скомпилировал библиотеку qpOASES в статическую библиотеку (libqpOASES.a и libqpOASES.so). Я последовал за этим youtube video о том, как использовать внешнюю библиотеку в RStudio. Видео проинструктировало меня создать папки lib и inc внутри моего проекта R. Внутри папки lib находятся два файла статической библиотеки (libqpOASES.a & libqpOASES.so). Внутри папки inc, которую я разместил, я поместил libqpOASES.hpp и каталог qpOASES, который содержит другие файлы заголовков, на которые ссылается libqpOASES.hpp).
Я работаю на компьютере с Windows, но пакет, который я создаю, в конечном итоге должен также работать с unix. В настоящее время в моей MakeVars (и Makevars.win) файл, у меня есть следующий:
PKG_CPPFLAGS = -I../inc
PKG_LIBS = $(LAPACK_LIBS) $(BLAS_LIBS) $(FLIBS) -L../lib -llibqpOASES
Когда я чист и восстановить проект: он успешно строит до следующего:
g++ -m64 -shared -s -static-libgcc -o default.dll tmp.def LS_LocalLaplacian.o RcppExports.o RegularizedLeastSquares.o TrainNetworks.o affinityMatrix.o dist2.o dn.o dominateSet.o rcpparma_hello_world.o -LC:/PROGRA~1/R/R-31~1.0/bin/x64 -lRlapack -LC:/PROGRA~1/R/R-31~1.0/bin/x64 -lRblas -lgfortran -L../lib -llibqpOASES -Ld:/RCompile/CRANpkg/extralibs64/local/lib/x64 -Ld:/RCompile/CRANpkg/extralibs64/local/lib -LC:/PROGRA~1/R/R-31~1.0/bin/x64 -lR
c:/rbuildtools/3.1/gcc-4.6.3/bin/../lib/gcc/i686-w64-mingw32/4.6.3/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -llibqpOASES
collect2: ld returned 1 exit status no DLL was created
ERROR: compilation failed for package 'default'
Я проверил именования вещей для опечаток и т. д., но не обнаружили проблемы там. Я попытался удалить «-llibqpOASES» из объявления PKG_LIBS, он компилирует; Однако, когда я пытаюсь использовать методы, предоставляемые библиотекой qpOASES, они не могут быть найдены:
undefined reference to qpOASES::QProblem::QProblem(int, int, qpOASES::HessianType)'
RegularizedLeastSquares.o:RegularizedLeastSquares.cpp:(.text+0x2a8): undefined reference to
qpOASES::QProblem::~QProblem()'
collect2: ld returned 1 exit status
no DLL was created
ERROR: compilation failed for package 'default'
Как успешно использовать внешний C++ библиотеки в RStudio?
Просто обратите внимание, что исправлена ссылка на [nloptr] (https://cran.rstudio.com/web/packages/nloptr/index.html). Ссылка @ dirk-eddelbuettel просто нужна 'r' в' nloptr' –