Maybe you need to set some flag in NAMESPACES to ask the package to load required libraries.
Hope that help. Hey again, I built the default Rcpp.package.skeleton rcpp_hello_world to take in strings and it worked fine. My problems seem to be from the libraries themselves. I recompiled the libraries that I could to be shared libraries and now the package builds the .so file, but I still get an error when checking the package. Error in dyn.load(file, DLLpath = DLLpath, ...) : unable to load shared object '/home/jrussell/src/C++/NLP/RDGGDriver/SantosDartmouth.Rcheck/SantosDartmouth/libs/SantosDartmouth.so': liblink_4_1b.so: cannot open shared object file: No such file or directory The library liblink_4_1b.so is link grammar with slight modifications to work with C++ code instead of C code and doesn't have an R package. I have placed all libs in the src directory of the package, and they can all be found at build time, and the .so file seems to be correctly built, but then when it is checked, it seems not to use the same ldflags that it uses when building (PKG_LIBS). Is this something that I need to set separately? I have tried ??Makevars and google searches for "R Makevars" and "external libraries Rcpp" and not found much. Are there any concrete examples of packaging external libraries inside of R packages? I have gone through all of the vignettes that I could find and can't seem to find anything about including pre-built .so files in packages. I suspect this is to keep source-only, but the libraries are not all mine and I don't have this option available. Thanks! Jacob Russell P.S. Time-To-Response on this mailing list is probably the best that I have ever seen on a mailing list. Congrats! On Fri, Aug 16, 2013 at 12:52:37PM -0500, Dirk Eddelbuettel wrote: > > On 16 August 2013 at 13:45, jacob.a.russell...@dartmouth.edu wrote: > | Hello, > | > | I am trying to build a package but I have quite a few dependencies. As such, I > | have modified Makevars to be (I don't like backticks because I find them too > | similar to single quotes): > | > | PKG_LIBS = $($(R_HOME)/bin/Rscript -e 'Rcpp:::LdFlags()') -L. -llink_4_1b -lDGG -lSTR -lDLL -lAF -lmy_std -lm > | PKG_CPPFLAGS=-I. -g > | > | Which seems to compile when my R wrapper is (incorrectly): > | > | RcppExport SEXP getDocGraph(std::string input){ > | > | std::string testStr = input; > | std::string output=getDG(testStr); > | return(Rcpp::wrap(output)); > | } > | > | but then it gives me a segmentation fault because it cannot access the > | underlying character array (or general object) passed in by R. > | > | Then if I change the function protoype to: > | > | RcppExport SEXP getDocGraph(SEXP input){ > | > | std::string testStr = Rcpp::as<std::string>(input); > | std::string output=getDG(testStr); > | return(Rcpp::wrap(output)); > | } > | > | it seems to compile, but when I go to check the package, the .Rcheck directory > | gives me an error: > | > | ** testing if installed package can be loaded > | Error in dyn.load(file, DLLpath = DLLpath, ...) : > | unable to load shared object ...<packagename>.so': > | > | and the .so file is not in the tgz package, but no error was given during > | compilation. > | > | Any help is greatly appreciated. > > Simplify. > > I would start by removing your six additional libraries and convince myself > that accessing a string via Rcpp works (and as our unit tests do that a lot, > you would have to be in a very unusual situation to not have it work). > > Once that works, add your libraries. If and when things break again, examine > the differences. > > Dirk > > -- > Dirk Eddelbuettel | e...@debian.org | http://dirk.eddelbuettel.com _______________________________________________ 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
_______________________________________________ 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