Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner AT cygwin DOT com Mail-Followup-To: cygwin AT cygwin DOT com Delivered-To: mailing list cygwin AT cygwin DOT com X-Originating-IP: [24.34.177.222] X-Originating-Email: [mgainty AT hotmail DOT com] From: "Martin Gainty" To: References: Subject: Re: linking with non-cygwin dll Date: Wed, 30 Jul 2003 21:07:13 -0700 MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit X-Priority: 3 X-MSMail-Priority: Normal X-MimeOLE: Produced By Microsoft MimeOLE V5.50.4522.1200 Message-ID: X-OriginalArrivalTime: 31 Jul 2003 01:06:58.0281 (UTC) FILETIME=[0A698590:01C35700] I would go so far as to suggest taking MSVCRT.dll off the path altogether After all why have 2 runtimes? -Martin ----- Original Message ----- From: "Igor Pechtchanski" To: Cc: Sent: Wednesday, July 30, 2003 6:03 PM Subject: Re: linking with non-cygwin dll > On Wed, 30 Jul 2003 vikramshrowty AT yahoo DOT com wrote: > > > Hi, > > I had posted a query earlier about a cygwin program linking > > with a non-cygwin dll. Based on the very helpful responses and some googling > > around, I learnt that this is possible. But... > > > > heres a main.c that links with cygwin1.dll > > > > int main(void) > > { > > printf("CYGWIN\n"); > > test_dll(); > > return(0); > > } > > > > where test_dll is in a dll compiled with -mno-cygwin and is defined > > like this... > > > > __declspec(dllexport) __stdcall void test_dll(void) > > { > > printf("MSFT %d\n",i); > > fflush(stdout); > > } > > > > This works perfectly. But, notice the fflush. If this is removed, > > "MSFT" doesnt get printf'ed. I assuming that this is because the > > stdout buffer in the microsoft c-library isnt getting flushed > > automatically at program exit. > > > > Any ideas on why?? ..and how to remedy this?? > > --Vikram > > Well, gcc links the Cygwin executable with its own C runtime. MSVCRT is > another C runtime. So, when you call the DLL, you have 2 C runtimes > competing for the same output stream. This can't be good (in fact, the > results are unspecified, IIRC). Thus, the simple remedy is: don't do > that. Either only use one runtime for output (whichever one), or fflush > and pray. > Igor > -- > http://cs.nyu.edu/~pechtcha/ > |\ _,,,---,,_ pechtcha AT cs DOT nyu DOT edu > ZZZzz /,`.-'`' -. ;-;;,_ igor AT watson DOT ibm DOT com > |,4- ) )-,_. ,\ ( `'-' Igor Pechtchanski, Ph.D. > '---''(_/--' `-'\_) fL a.k.a JaguaR-R-R-r-r-r-.-.-. Meow! > > "I have since come to realize that being between your mentor and his route > to the bathroom is a major career booster." -- Patrick Naughton > > > -- > 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/ > > -- 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/