Mailing-List: contact cygwin-help@cygwin.com; run by ezmlm
List-Subscribe: <mailto:cygwin-subscribe@cygwin.com>
List-Archive: <http://sourceware.org/ml/cygwin/>
List-Post: <mailto:cygwin@cygwin.com>
List-Help: <mailto:cygwin-help@cygwin.com>, <http://sourceware.org/ml/#faqs>
Sender: cygwin-owner@cygwin.com
Mail-Followup-To: cygwin@cygwin.com
Delivered-To: mailing list cygwin@cygwin.com
To: cygwin@cygwin.com
From: Jani Tiainen <redetin@luukku.com>
Subject: Re: Building plugin that is used from multiple executables
Date: Wed, 06 Oct 2004 15:26:04 +0300
Lines: 59
Message-ID: <ck0o9b$i39$1@sea.gmane.org>
References: <1529c46304100604132bced4d1@mail.gmail.com>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
X-Complaints-To: usenet@sea.gmane.org
X-Gmane-NNTP-Posting-Host: 195.236.144.25
User-Agent: Mozilla Thunderbird 0.8 (Windows/20040913)
In-Reply-To: <1529c46304100604132bced4d1@mail.gmail.com>
X-IsSubscribed: yes

Maarten Boekhold wrote:
> Hi,
> 
> Suppose I have a plugin library that contains calls that reside in the
> executable that dlopen()'s that plugin. You can link such a plugin by
> using a .def file that contains something like:
> 
> IMPORTS
> symbol = executable.exe.symbol
> 
> Now if I need to be able to use the *same* plugin from *two*
> executables, how do I resolve that??? Can I use a .def file that
> contains:
> 
> IMPORTS
> symbol = executable_1.exe.symbol
> symbol = executable_2.exe.symbol
> 
> My gut feeling says 'no', but hope against hope...

Well, shortly... You can't do that. Since windows exports are binded to 
name of library (application) and symbol...

Long way: You can do it, but you need to take alternative route.

You need one extra DLL that has imports symbol from executable and 
ex-exports symbol you need forward to plugin:

for plugin you need to do following:

IMPORT
symbol = helper.dll.symbol

and for both apps you create own helper.dll:

app1.exe create helper.dll:
IMPORT
symbol = app1.exe.symbol

EXPORT
symbol

app2.exe create helper.dll:
IMPORT
symbol = app2.exe.symbol

EXPORT
symbol

And finally...

Or even better, DTRT in windoze world is to pass needed symbol pointers 
as arguments to plugin function, since windows libraries and 
applications doesn't allow unresolved symbols in linktime (so called 
backlinking issue)...

-- 

Jani Tiainen


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

