On Oct 17 11:10, Corinna Vinschen wrote: > On Oct 16 23:51, Christian Franke wrote: > > Corinna Vinschen wrote: > > >... > > >I implemented this in the latest snapshot. It calls SetDllDirectory > > >on Cygwin's /bin, and dlopen addiotnally tries to load the DLL with > > >LoadLibraryEx(LOAD_WITH_ALTERED_SEARCH_PATH) if all else failed. > > > > For some reason, the SetDllDirectory() call has no effect for exec(): > > > > Testcase: > > > > $ unset PATH > > > > $ uname -srvm > > -bash: uname: No such file or directory > > > > $ /bin/uname -srvm > > CYGWIN_NT-6.1-WOW64 1.7.33s(0.277/5/3) 20141014 19:44:03 i686 > > > > $ /usr/sbin/alternatives > > /usr/sbin/alternatives: error while loading shared libraries: ?: cannot open > > shared object file: No such file or directory > > Weird. The same sequence of commands works fine for me on W8, > W8.1 and W10 64 bit, under i686 as well as x86_64 Cygwin. > > [...] > > but it doesn't on Vista and W7, wow. > > The question now is, is it because the path given to SetDllDirectory > is not propagated to child processes on older systems, or is it > because the directory is only used in calls to LoadLibrary{Ex} on > older systems. > > Stay tuned, I have to investigate this.
Ok, so prior to W8, the SetDllDirectory path is not propagated to child processes :-| I created a patch and a new snapshot on https://cygwin.com/snapshots/ which calls SetDllDirectory during initialization of every process. Please give it a try. Thanks, Corinna -- Corinna Vinschen Please, send mails regarding Cygwin to Cygwin Maintainer cygwin AT cygwin DOT com Red Hat
pgp7hW4w5b98s.pgp
Description: PGP signature