This is the mail archive of the cygwin@cygwin.com 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: Run time linking a .dll into a .exe


 --- Glen Ozymok <ozymok@hotmail.com> wrote: > I want to create some
plugins for an executable.
> The problem is that when I create a plugin
> (.dll, shared object, or whatever you want to call it),
> it sucks in code that is already in the executable.
> In other words, I link the executable with some static
> library, libfoo.a, and the executable gets routines from
> libfoo.a. I then link the dll, and it gets some of the same
> routines.
> 
> Normally this would be annoying since you have code
> duplication, but would work. However, if the code
> contains static variables, then the executable and the
> dll have their own versions of the static, which get out
> of sync.
> 
> Is there a way to link the dll so that it uses the code
> inside the executable?
> 

The safest way is to make libfoo.a into a dll. and link against that to get
your static variable.  That way there is one and only one copy of the
variable, living in the dll.  See the C++ code in a recent version of the
dllhelpers examples.

BTW, a very similar problem occurs when throwing exceptions across dll/exe
boundaries when the eh code lives in a static lib (say libgcc.a).

Danny

http://shopping.yahoo.com.au - Yahoo! Shopping
- Get organised for Christmas early this year!

--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Bug reporting:         http://cygwin.com/bugs.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]