Hi Doug, For the benefit of everyone, I will update this with my findings so far. The "-lR" compile flag mentioned by Doug below links to "libR.so" which is a shared/dynamic library when you compile R from source. The issue is that I am on Windows and so I understrand the equivalent is R.dll. However, this needs to be converted to a .lib /.a file so that it can be statically linked to. I'm surprised that this hasn't been documented and I've seen quite a few people confused about this. Has anyone made any progress on this front or am I totally going down the wrong road? Thanks.
Dahir. On Wed, March 9, 2011 16:57, Douglas Bates wrote: > On Wed, Mar 9, 2011 at 9:14 AM, Dahir Alihassan <[email protected]> wrote: > >> Hi, >> >> >> I am posting here upon Dirk's suggestion, as I understand this is well >> attended to and I'd be grateful for any help. I am taking over a project >> which involves upgrading to the latest version of Rcpp and thus I have >> to upgrade all the old style API calls (which is compatible with the >> Classic >> version I believe). The compile works fine but the errors arise on >> linking against the resulting \inst\libs\RLinkage.dll. >> >> I have manged to convert a lot of the code (mainly using Rcpp::List to >> extract and pack incoming and outgoing function parameters but also a >> bit of exception handling) but I simply keep getting "undefined >> reference" errors on linking. The build log after compiling says >> "Linking console >> executable" and this is where it list undefined references in the >> *.o:*.cpp files to: >> >> >> 1.Rprintf or Rf_error and forward_exception_to_r. >> 2.R_NilValue >> 3.Rf_install >> > > Except for forward_exception_to_r those symbols are part of the R API. > Can you provide the output from the compilation of the package? The > last line of the compilation should look like > > g++ -shared -o minqa.so altmov.o bigden.o biglag.o bobyqa.o bobyqb.o > lagmax.o minqa.o newuoa.o newuob.o prelim.o rescue.o trsapp.o trsbox.o > trstep.o uobyqa.o uobyqb.o update.o updatebobyqa.o > -L/home/bates/R/x86_64-pc-linux-gnu-library/2.12/Rcpp/lib -lRcpp > -Wl,-rpath,/home/bates/R/x86_64-pc-linux-gnu-library/2.12/Rcpp/lib > -lgfortran -lm -L/usr/lib64/R/lib -lR > > > and the important part is the -lR at the end. That is where those symbols > (except for forward_exception_to_r) are defined. > > >> I do have #include <Rcpp.h> (there was a series of errors that were >> occuring because I had included iostream before Rcpp, which was strange). >> I've tried looking at the RCPP PDF but can't seem to figure it >> out. I also tried to ensure that R.dll is on my PATH (C:\Program >> Files\R\R-2.12.1\bin\x64). I am using Code::Blocks 10.05 IDE with >> RTools >> installed and Mingw64 referenced explicitly in the toolchain (and >> correctly Autodetected as the compiler). I'd be extremelt grateful for >> any heads up. Thanks! >> >> >> >> >> _______________________________________________ >> Rcpp-devel mailing list >> [email protected] >> https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel >> >> > _______________________________________________ Rcpp-devel mailing list [email protected] https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel
