Hi Dirk, Thanks for the quick reply.
I'm aware of the nloptr CRAN package, but not using that package as the objective function (and gradient) being optimized as to be in C++. Defining the function in R and then calling back and forth between R and C++ using the nloptr package is too costly time-wise. Thanks, Jens Christian On Tue, Apr 26, 2016 at 5:35 PM, Dirk Eddelbuettel <e...@debian.org> wrote: > > Jens, > > On 26 April 2016 at 17:22, Jens Johannsen wrote: > | Dear Rcpp-Devels, List, > | > | I'm struggling with building a Rcpp package linking to the NLopt library > (http: > | //ab-initio.mit.edu/wiki/index.php/NLopt). > > Before we get any further, is there a reason you are NOT using the CRAN > package doing this for you (and where I helped some with the build system): > > https://cloud.r-project.org/web/packages/nloptr/index.html > > It provides a Windows binary as well as well-working build recipe as can be > expected from a CRAN package. > > Dirk > > | I'm on Windows and I've the following files in \src: > | > | • Makevars.in > | • Makevars.win > | • Rcpp_project_test.cpp > | • RcppExports.cpp > | • nlopt.h > | • nlopt.hpp > | • libnlopt-0.lib > | • libnlopt-0.def > | • libnlopt-0.a > | • libnlopt-0.dll > | > | where I've copied the .lib (built using MinGW) and dll files to the src > folder > | in the hope that R would compile them itself. That doesn't seem to be > the case, > | however, and for that reason I've added a Makevars file where I try to > link to > | the library. > | > | When running 'Build&Reload' from RStudio, I get the following error > message > | telling me that there is a problem with linking (cf. "undefined > reference"): > | > | Multithreaded BLAS/LAPACK libraries detected. Using 4 cores for math > | algorithms. > | * installing to library 'C:/Users/g49128/Documents/R/win-library/3.2' > | * installing *source* package 'NewPackage' ... > | g++ -m64 -I"C:/PROGRA~1/R/R-32~1.2/include" -DNDEBUG -Inlopt-2_4 -g -O1 > | -I"C:/Users/g49128/Documents/R/win-library/3.2/Rcpp/include" -I"c:/ > | applications/extsoft/include" -O2 -Wall -mtune=core2 -c > RcppExports.cpp -o > | RcppExports.o > | ** libs > | g++ -m64 -I"C:/PROGRA~1/R/R-32~1.2/include" -DNDEBUG -Inlopt-2_4 -g -O1 > | -I"C:/Users/g49128/Documents/R/win-library/3.2/Rcpp/include" -I"c:/ > | applications/extsoft/include" -O2 -Wall -mtune=core2 -c > | Rcpp_project_test.cpp -o Rcpp_project_test.o > | Rcpp_project_test.cpp:17:0: warning: "PI" redefined [enabled by default] > | C:/PROGRA~1/R/R-32~1.2/include/R_ext/Constants.h:32:0: note: this is the > | location of the previous definition > | Multithreaded BLAS/LAPACK libraries detected. Using 4 cores for math > | algorithms. > | g++ -m64 -shared -s -static-libgcc -o NewPackage.dll tmp.def > RcppExports.o > | Rcpp_project_test.o -Lnlopt-2_4/libnlopt-0.a > -Lc:/applications/extsoft/lib/x64 > | -Lc:/applications/extsoft/lib -LC:/PROGRA~1/R/R-32~1.2/bin/x64 -lR > | Multithreaded BLAS/LAPACK libraries detected. Using 4 cores for math > | algorithms. > | Rcpp_project_test.o: In function `opt': > | C:\Temp\R\Rcpp\NewPackage\src/nlopt.hpp:274: undefined reference to > | `__imp_nlopt_create' > | C:\Temp\R\Rcpp\NewPackage\src/nlopt.hpp:279: undefined reference to > | `__imp_nlopt_set_munge' > | Rcpp_project_test.o: In function `~opt': > | C:\Temp\R\Rcpp\NewPackage\src/nlopt.hpp:272: undefined reference to > | `__imp_nlopt_destroy' > | C:\Temp\R\Rcpp\NewPackage\src/nlopt.hpp:272: undefined reference to > | `__imp_nlopt_destroy' > | collect2: ld returned 1 exit status > | > | I suspect that I haven't got the Makevars right, not so well versed in > those. > | From reading several CRAN packages, in particular nloptr, my current > best guess > | on the content of both Makevars files is: > | > | PKG_CPPFLAGS = -Inlopt-2_4 -g -O1 > | PKG_LIBS = `$(R_HOME)/bin/Rscript -e "Rcpp:::LdFlags()"` -Llibnlopt-0.lib > | > | Could anyone tell me what I'm missing here? Any help would be much > appreciated, > | thank you. > | > | Best Regards, > | Jens Christian > | > | _______________________________________________ > | Rcpp-devel mailing list > | Rcpp-devel@lists.r-forge.r-project.org > | https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel > > -- > http://dirk.eddelbuettel.com | @eddelbuettel | e...@debian.org >
_______________________________________________ Rcpp-devel mailing list Rcpp-devel@lists.r-forge.r-project.org https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel