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 Bowsher wrote:

> 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.

This does actually work, AFAIK.  You need to use __declspec(dllexport)
on the symbols in the .exe, and produce an import library
(-Wl,--out-implib) when building the .exe which is then used in linking
the .dll.  It hardcodes the name of the .exe in the .dll though, so it
also means that you cannot use the .dll as a general purpose library.

Refactoring out to a common .dll is much cleaner.  You can also design
the API so that you pass pointers to the symbols as arguments to
functions in the .dll.

The archives of this list (and the mingw list FWIW) have numerous
versions of this question, because it comes up all the time from people
that are used to the way linux shared libraries work.

Brian

--
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]