[Rcpp-devel] useDynLib

Sean Robert McGuffee sean.mcguffee at gmail.com
Fri Apr 1 20:23:20 CEST 2011


Wow, 
Thanks!
That is extremely useful!
I hadn't found that section 1.2.1, but that is definitely something I
shouldn't have been overlooking.
Sean


On 4/1/11 2:15 PM, "Davor Cubranic" <cubranic at stat.ubc.ca> wrote:

> On 2011-03-31, at 8:12 PM, Sean Robert McGuffee wrote:
> 
>> Thanks for the info about modularity. I'll definitely be wikipedia'ing that.
>> Also, thanks for clarifying the package author thing--I literally was
>> imagining some sort of function that writes something related to packages.
> 
> You know, I can see that, esp. in the context of the rest of that section.
> I'll send a suggestion to the manual maintainers to consider using a clearer
> expression.
> 
>> In particular with useDynLib, what type of argument(s) go(es) in it?
>> For example, do I literally copy a file object into it somehow?
> 
> What I have in my NAMESPACEs, and is used in the example in section 1.6.4 of
> the manual, is just the name of the DLL without the extension. And it's a
> symbol, rather than a string, so no quotes.
> 
>> For example, say I want to link against libpng14.
>> On the machine I'm sitting at, it's located at:
>> /usr/local/lib/libpng14.a
>> How would I use useDynLib in that case?
> 
> Aha, you may not need to dive into "useDynLib"s dark corners after all. I only
> use "useDynLib" to link to my package's own library. For linking to a library
> provided by another package, such as Rcpp or a system library, I have a
> src/Makevars in my package that sets the right "-l" compiler switches and
> assigns them to PKG_LIBS variable. See section "1.2.1 Using Makevars" in
> R-exts. It goes into way more detail than you'll need (ignore all stuff about
> "configure" for now), or see how Rcpp.package.skeleton creates a Makevars file
> that has all the switches to link against Rcpp's DLL. (In their case it's a
> bit more general, and you may really need nothing more than
> "PKG_LIBS=-lpng14".)
> 
> I admit I approach this on a need-to-know basis myself, IOW only about as far
> as I need to make my code work. But it does work, and I have also seen it used
> in a number of packages I've looked at, so I don't think it's too far off the
> mark. Others on the list can chime in if I'm grossly misrepresenting the
> linking mechanism or what you should do in your case.
> 
> Davor




More information about the Rcpp-devel mailing list