[R] cannot dyn.load dll from path
Duncan Murdoch
murdoch.duncan at gmail.com
Thu Jan 19 19:52:45 CET 2012
On 19/01/2012 1:42 PM, Adrian Dragulescu wrote:
> It doesn't work even if I set it with \\. My path has a mixture of \\ and
> / and other entries work fine.
>
> if (file.exists("C:/Temp/XML.dll")) {
> Sys.setenv(path = paste("C:\\Temp;C:/Temp;", Sys.getenv("path"), sep=""))
> dyn.load("XML.dll") # doesn't find it!
> }
> Error in inDL(x, as.logical(local), as.logical(now), ...) :
> unable to load shared object '//nas-msw-20/adrian/My Documents/XML.dll':
> LoadLibrary failure: The specified module could not be found.
> >
>
> My home folder is on a network drive.
I really think you should follow the advice in ?dyn.load and use a full
path, or go to Microsoft's site and check the rules for how LoadLibrary
searches for DLLs.
Duncan Murdoch
> Thank you,
> Adrian
>
>
>
> On Thu, 19 Jan 2012, Duncan Murdoch wrote:
>
> > On 19/01/2012 11:19 AM, Adrian Dragulescu wrote:
> >> Hello,
> >>
> >> I'm on Windows, and according to the documentation R searches along the
> >> search path when looking for dll's for dyn.load.
> >>
> >> For illustration, I've copied the XML.dll from package XML in the C:/Temp
> >> folder
> >>
> >> if (file.exists("C:/Temp/XML.dll")) {
> >> Sys.setenv(path = paste("C:/Temp;", Sys.getenv("path"), sep=""))
> >> dyn.load("XML.dll") # doesn't find it!
> >> }
> >>
> >>
> >> head(strsplit(Sys.getenv("path"), ";")[[1]]) # C:/Temp is there
> >>
> >> dyn.load("C:/Temp/XML.dll") # works fine
> >>
> >> Am I misreading the documentation?
> >
> > I believe that search is done by Windows, and different versions are very
> > inconsistent about search order. However, one thing I would guess is that
> > recent versions would require backslashes rather than forward slashes in
> > PATH. When R gets a path, it generally translates the slashes, but if you're
> > relying on Windows to do it, you're stuck with what they decide to do.
> >
> > Duncan Murdoch
> >
More information about the R-help
mailing list