This is the mail archive of the
cygwin
mailing list for the Cygwin project.
Re: Running a program using a DLL under Cygwin
- From: Andrey Repin <anrdaemon at yandex dot ru>
- To: Linda Walsh <cygwin at tlinx dot org>, cygwin at cygwin dot com
- Date: Sun, 11 Oct 2015 17:20:01 +0300
- Subject: Re: Running a program using a DLL under Cygwin
- Authentication-results: sourceware.org; auth=none
- References: <22038 dot 29093 dot 221000 dot 863384 at woitok dot gmail dot com> <CAJygYd3DLkzj=Va7uuU8-NSjUG6kog0YqBuvhDMMA=0vZwY+=Q at mail dot gmail dot com> <393201296 dot 20151008181210 at yandex dot ru> <5619F993 dot 1030703 at tlinx dot org>
- Reply-to: cygwin at cygwin dot com
Greetings, Linda Walsh!
>>> I think symlink is a cygwin thing. Windows won't find that DLL (just
>>> like you won't find it using windows explorer.)
>>
>> Unless he have created a Windows symlink, that is correct.
>> Explorer, however, may find it, as Cygwin symlinks are Windows LNK files.
> ----
> Cygwin symlinks can use native Windows format, if you put 'winsymlinks:native export'
> in your 'CYGWIN' env var at startup -- preferably in your Win profile.
> However, cygwin occasionally has some bugs in how it creates links:
> /tmp> touch x
> /tmp> ln -s x y
> /tmp> ll x y
> -rw-rw-r--+ 1 0 Oct 10 22:27 x
> lrwxrwxrwx 1 6 Oct 10 22:28 y -> /tmp/x
> /tmp> cmd /c dir ?|grep '\s[xy]'
> 10/10/2015 10:32 PM 0 x
> 10/10/2015 10:40 PM <SYMLINK> y [C:\tmp\x]
> /tmp> rm y
> /tmp> mklink x y
Do note that native mklink has arguments in the opposite order. (Microsoft...)
> symbolic link created for y <<===>> x
> tmp> cmd /c dir ?|grep '\s[xy]'
> 10/10/2015 10:32 PM 0 x
> 10/10/2015 10:43 PM <SYMLINK> y [x]
> Normally cygwin can create relative symlinks but for some reason
> using these names -- in /tmp, it did not.
> (if I used a name other than 'y' for the symlink like 'winlink' or 'cyglink'
> then they both were relative links)
> Go figger...
> Also, FWIW Cygwin 'hardlinks' are Windows 'hardlinks'.
> No significant difference.
Well, it is a difference.
If target of a symlink is deleted and recreated, the symlink will still work.
If a hardlinked file is deleted and recreated, it'll lose the link between the
two.
> So you could use a windows symlink or hardlink created in cygwin
> to the location of your 'dll' and it "should" work (but I haven't
> tested it)
For the purposes of DLL loading, hardlink is probably a good choice.
--
With best regards,
Andrey Repin
Sunday, October 11, 2015 17:17:03
Sorry for my terrible english...
--
Problem reports: http://cygwin.com/problems.html
FAQ: http://cygwin.com/faq/
Documentation: http://cygwin.com/docs.html
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple