This is the mail archive of the cygwin mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Visibility of compiler symbols between executables and DLLs


Max,

Thanks, that's the conclusion that I had come to. On other UNIX-based
platforms it's possible without actually linking with the .exe,
provided you have compiled with the right flags (-shared on Linux, or
-E on HP-UX). With this done the .exe exposes its global symbols to
subsequently loaded libraries which can then import them. Looks like
DLLs are are more restrictive, but I couldn't find anything documented
about it for cygwin.

Thanks,

Nick

On 9/26/05, Max Bowsher <maxb@ukf.net> wrote:
> Nick Glencross wrote:
> > Guys,
> >
> > I've done some research on this and don't believe that it's a
> > perennial question that keeps coming up!
> >
> > On many platforms compilation symbols in an executable are not made
> > visible to its Shared Library/DLLs by default, but this can often be
> > overridden with a compiler flag to change the policy. My question in a
> > nutshell then is whether cygwin has the ability to have a DLL access a
> > global variable within the executable that loads it? As an obvious
> > follow on, if yes, then how do you go about doing it?
> >
> > Everything that I've seen indicates that this isn't possible, due to
> > limitations imposed by DLLs, but would appreciate believing this with
> > a bit more confidence,
>
> I'm fairly sure that it is impossible. Actually, it might be possible if
> there was a flag to convice GCC to add an import table to the built .exe,
> but last time I investigated that, there was no such flag. But even if that
> was possible, the .dll would need to explicitly link against the .exe that
> was to load it, for this method to work.
>
> The standard workaround is to put whatever symbols both the .exe and the
> .dll both need access to into a second .dll, which both of the original
> components then link against.
>
> Interestingly, the difficulties created by DLLs are at least slightly
> similar to those created by OS X two-level-namespace linking.
>
>
> Max.
>
>

--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Problem reports:       http://cygwin.com/problems.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]