delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/2006/12/20/15:13:39

X-Spam-Check-By: sourceware.org
Message-ID: <20061220211315.7pna4i6x4uzkkkc4@webmail.unizar.es>
Date: Wed, 20 Dec 2006 21:13:15 +0100
From: "Francisco J. Royo Santas" <497328 AT unizar DOT es>
To: cygwin AT cygwin DOT com
Subject: Re: "cout" and "cerr" won't work after cygwin1.dll init from VC++
MIME-Version: 1.0
User-Agent: Internet Messaging Program (IMP) H3 (4.0.2)
X-Mail-Scanned: Criba 2.0 + Clamd & Bogofilter
Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm
List-Id: <cygwin.cygwin.com>
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

I compiled the "cygload" package (it is supposed to be the way to load
cygwin1.dll and have the 4K scratch space) under MSVC and generated
msvc-cygload.exe. The execution result is:

Connecting to cygwin...
Warning!  Stack base is 00140000.  padding ends at 0013FFC0.  Delta is 64.  Stac
k variables could be overwritten!
Loading cygwin1.dll...
Initializing cygwin...

There should be more information after the last line (I wrote lines that should
appear and they do not). I DO need to use cout and cerr because the application
using cygwin1.dll and my own dll depending on cywing is a command-prompt
application.

How can I write to the command-prompt??

Thanks and G'Bye

Quoting Matthew Woehlke:
>Francisco J. Royo Santas wrote:
>
>>I have a VC++ program that uses a Cygwin-compiled DLL. I can init cygwin1.dll
>>but, after doing this, cout and cerr stop working. cout << "Message" << endl
>>does not appear on the screen. I do not know exactly what happens here. The
>>program is:
>
>
>/me repeats Dave's comment
>
>>cout << "Before" << endl;   // Appears
>>HMODULE cygwinDll = LoadLibrary("cygwin1.dll");
>>void (*init)() = (void (__cdecl *)(void)) GetProcAddress(cygwinDll,
>>"cygwin_dll_init");
>>init();
>>cout << "After" << endl;    // Does nor appear
>
>
>>What is going on here?? What do I have to do to have cout and cerr back
>>normally??
>
>
>Does it work if you /don't/ use cout before cygwin_dll_init()?
>
>My guess would be "don't expect to be able to use cout/cerr before /and/ after
>calling cygwin_dll_init()". This just "feels" like something that would not
>work, nor should you probably be doing it. I would think that calling
>cygwin_dll_init() needs to be /the very first thing you do/. In fact, doing
>anything with stdin/stdout/stderr (i.e. stdio too) before and after is
probably >a bad idea unless you know what you are doing.


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