delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/2005/06/30/20:50:31

Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm
List-Subscribe: <mailto:cygwin-subscribe AT cygwin DOT com>
List-Archive: <http://sourceware.org/ml/cygwin/>
List-Post: <mailto:cygwin AT cygwin DOT com>
List-Help: <mailto:cygwin-help AT cygwin DOT com>, <http://sourceware.org/ml/#faqs>
Sender: cygwin-owner AT cygwin DOT com
Mail-Followup-To: cygwin AT cygwin DOT com
Delivered-To: mailing list cygwin AT cygwin DOT com
Message-ID: <42C4939D.DED5398E@dessent.net>
Date: Thu, 30 Jun 2005 17:51:41 -0700
From: Brian Dessent <brian AT dessent DOT net>
MIME-Version: 1.0
To: cygwin AT cygwin DOT com
Subject: Re: Dynamically load a shared lib created using gcc/Cygwin
References: <200507010026 DOT j610Qhwa026567 AT citheronia DOT ucdavis DOT edu>
X-Spam-Report: -5.9/5.0 ---- Start SpamAssassin results * -3.3 ALL_TRUSTED Did not pass through any untrusted hosts * -2.6 BAYES_00 BODY: Bayesian spam probability is 0 to 1% * [score: 0.0000] * 0.0 AWL AWL: From: address is in the auto white-list ---- End SpamAssassin results
X-IsSubscribed: yes
Reply-To: cygwin AT cygwin DOT com

Yu-Cheng Chou wrote:

> mylib.dll was created using gcc/cygwin based on some libraries that were
> also built using gcc/cygwin and CANNOT be re-built by other compilers.
> I have to, and need only to load mylib.dll at run-time by function
> LoadLibrary("mylib.dll")
> in an applicaiton that was built by Visual C++ or .NET.
> When I ran this application in Windows XP, it hung at LoadLibrary
> ("mylib.dll").

Please stop sending me personal email.  This is a public mailing list,
address all replies to the list.

I don't see what the different compilers have to do with anything.  You
would be facing the same situation if you tried to load cygwin1.dll from
a mingw program without properly initializing it, and in that case
everything would be built from gcc.  The only reason you don't have to
worry about this for Cygwin .exes is that the initialization code is
done for you in the CRT startup code.

I don't know what to tell you.  The Cygwin DLL has its own special
requirements that have to be met.  If you don't load it properly your
application will not work.  If you can't do that you can't use the DLL.

You might be able to work around this by making a stub DLL with the same
interface as mylib.dll, that would load and initialize cygwin1.dll and
then load the real mylib.dll, and pass through any function calls to
mylib.dll.  But doing that would be a whole lot harder than just having
the program that is doing LoadLibrary("mylib.dll") first load the Cygwin
DLL.  And since all these programs must be open source (or else you're
violating the Cygwin license agreement), I don't see why you can't just
do that.

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/

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019