[Rcpp-devel] NLopt linking problem

Jens Johannsen jenschr.johannsen at gmail.com
Tue Apr 26 17:22:17 CEST 2016


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
<http://ab-initio.mit.edu/wiki/index.php/NLopt>*).

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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.r-forge.r-project.org/pipermail/rcpp-devel/attachments/20160426/92ab154b/attachment.html>


More information about the Rcpp-devel mailing list