Message-ID: <CABdJFs4A3o0trfyUFYcHDCnGnjK9P=r_Qo4rQ2ia=68rgoEsRw@mail.gmail.com>
Date: 2016-04-26T15:50:42Z
From: Jens Johannsen
Subject: [Rcpp-devel] NLopt linking problem
In-Reply-To: <22303.35499.449462.592124@max.nulle.part>
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 <edd at 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 at lists.r-forge.r-project.org
> | https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel
>
> --
> http://dirk.eddelbuettel.com | @eddelbuettel | edd at debian.org
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.r-forge.r-project.org/pipermail/rcpp-devel/attachments/20160426/a8c68f63/attachment-0001.html>