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


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]