g++ linker problem with libcygwin.a

zosrothko zosrothko@orange.fr
Mon Mar 17 01:57:00 GMT 2014


Here the definition of the cmain.c program, part of libcygwin.a. This code
has a "main" entry point which is  calling the WinMain by the end.... So the
question remains: Why g++/ld links with this "main" entry instead of the one
of the user's main program?


/* libcmain.c

   Copyright 1996, 1997, 1998, 2000, 2001, 2006, 2009 Red Hat, Inc.

This file is part of Cygwin.

This software is a copyrighted work licensed under the terms of the
Cygwin license.  Please consult the file "CYGWIN_LICENSE" for
details. */

#include <windows.h>

#define SP " \t\n"

/* Allow apps which don't have a main to work, as long as they define
WinMain */
main ()
  HMODULE x = GetModuleHandle (0);
  char *s = GetCommandLine ();
  char *nexts;

  s += strspn (s, SP);

  if (*s != '"')
    nexts = strpbrk (s, SP);
    while ((nexts = strchr (s + 1, '"')) != NULL && nexts[-1] == '\\')
      s = nexts;

  if (!nexts)
    nexts = strchr (s, '\0');
    nexts += strspn (nexts + 1, SP);

  GetStartupInfo (&si);

  return WinMain (x, 0, nexts,
		  ((si.dwFlags & STARTF_USESHOWWINDOW) != 0
		   ? si.wShowWindow

View this message in context: http://cygwin.1069669.n5.nabble.com/g-linker-problem-with-libcygwin-a-tp37812p107147.html
Sent from the Cygwin list mailing list archive at Nabble.com.

Problem reports:       http://cygwin.com/problems.html
FAQ:                   http://cygwin.com/faq/
Documentation:         http://cygwin.com/docs.html
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple

More information about the Cygwin mailing list