| delorie.com/archives/browse.cgi | search |
| Mailing-List: | contact cygwin-help AT cygwin DOT com; run by ezmlm |
| List-Subscribe: | <mailto:cygwin-subscribe AT cygwin DOT com> |
| List-Archive: | <http://sources.redhat.com/ml/cygwin/> |
| List-Post: | <mailto:cygwin AT cygwin DOT com> |
| List-Help: | <mailto:cygwin-help AT cygwin DOT com>, <http://sources.redhat.com/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 |
| From: | "Hannu E K Nevalainen (garbage mail)" <garbage_collector AT telia DOT com> |
| To: | <cygwin AT cygwin DOT com> |
| Subject: | RE: Linking VC++ DLL |
| Date: | Mon, 24 Mar 2003 15:49:03 +0100 |
| Message-ID: | <NGBBLLIAMFLGJEOAJCCEEEBMCNAA.garbage_collector@telia.com> |
| MIME-Version: | 1.0 |
| X-Priority: | 3 (Normal) |
| X-MSMail-Priority: | Normal |
| In-Reply-To: | <Pine.GSO.4.21.0303241837570.9209-100000@sf0.comp.nus.edu.sg> |
| X-MimeOLE: | Produced By Microsoft MimeOLE V5.00.2615.200 |
| Importance: | Normal |
> From: cygwin-owner AT cygwin DOT com [mailto:cygwin-owner AT cygwin DOT com]On Behalf
--8<--
> extern "C" __declspec(dllexport) int hello()
> {
> printf("Hello World!\n");
> return 345;
> }
--8<--
> int main()
> {
> printf("What is this? %d\n", hello());
> }
>
> All I get in return is (under Cygwin):
> What is this? 345
>
> 345 demonstrates that the function was called and correctly returned but
> why is it that the printf statement in the function hello() went missing?
> I have tried to run other VC compiled program but had no problem in
> getting printf statements to work under the Cygwin environment. Would
> appreciate if anyone can suggest what could be the possible
> problem. Thanks!
>
> regards
> Edward
I believe this is close to off topic on the cygwin list. ;-)
My guess is that stdin/stdout from main() isn't defined/visible for the
functions inside your library.
To illustrate the problem; Try this:
--8<--
extern "C" __declspec(dllexport) int hello(FILE *of)
{
fprintf(of,"Hello World!\n");
return 345;
}
--8<--
int main()
{
printf("What is this? %d\n", hello(stdout));
}
--8<--
... which MIGHT work.
Expect something like:
Hello World!
What is this? 345
as output.
You may have a problem here:
I believe you have to think about which version of printf() you wish to
have available in your library and/or program.
Your library might contain *a copy of printf()*, I'm not sure it will be
sufficient for all situations. Especially as it seems as you're using two
different compilers/environments to compile your library and program.
If so; IMHO there is great potential for serious malfunction.
/Hannu E K Nevalainen, Mariefred, Sweden
--END OF MESSAGE--
--
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/
| webmaster | delorie software privacy |
| Copyright © 2019 by DJ Delorie | Updated Jul 2019 |