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 <[EMAIL PROTECTED]> 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/