delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/1999/08/26/03:04:34

Mailing-List: contact cygwin-help AT sourceware DOT cygnus DOT com; run by ezmlm
List-Unsubscribe: <mailto:cygwin-unsubscribe-archive-cygwin=delorie DOT com AT sourceware DOT cygnus DOT com>
List-Subscribe: <mailto:cygwin-subscribe AT sourceware DOT cygnus DOT com>
List-Archive: <http://sourceware.cygnus.com/ml/cygwin/>
List-Post: <mailto:cygwin AT sourceware DOT cygnus DOT com>
List-Help: <mailto:cygwin-help AT sourceware DOT cygnus DOT com>,
<http://sourceware.cygnus.com/ml/#faqs>
Sender: cygwin-owner AT sourceware DOT cygnus DOT com
Delivered-To: mailing list cygwin AT sourceware DOT cygnus DOT com
Message-ID: <37C4E57A.12732A7C@stest.ch>
Date: Thu, 26 Aug 1999 08:58:03 +0200
From: Thomas Kowatsch <Thomas DOT Kowatsch AT stest DOT ch>
Organization: Switching Test Solutions AG
X-Mailer: Mozilla 4.04 [en] (X11; U; SunOS 5.5.1 sun4u)
MIME-Version: 1.0
To: Cygwin List <cygwin AT sourceware DOT cygnus DOT com>
Subject: Re: Failed to build tcl8.1
References: <199908170710 DOT CAA10993 AT mercury DOT xraylith DOT wisc DOT edu> <37C2C593 DOT B9D4E7DA AT stest DOT ch>

Finally got it all compiled. I figured out what the problemwas, see below

<snip>

> I just renamed these function in there modules prepending a Tk. Then
> compile worked just fine but when it came to link the dll I got
> thousands of unresolved externals from tcl like
>   tkWindow.o: In function `Initialize':
>   //z/STS/TCU/thirdparty/WinNT/tk8.1/win/./../generic/tkWindow.c:2717:
> undefined reference to `_imp__Tcl_PkgRequire'
>   //z/STS/TCU/thirdparty/WinNT/tk8.1/win/./../generic/tkWindow.c:2721:
> undefined reference to `_imp__Tcl_GetThreadData'

This was because of a bug in tcl.h (same was in tk.h) together whenusing -DUSE_TCL_STUBS. In tcl.h there is
defined the TCL_STORAGE_CLASS
macro at the top like:

#ifdef BUILD_tcl
# define TCL_STORAGE_CLASS DLLEXPORT
#else
# ifdef USE_TCL_STUBS
#  define TCL_STORAGE_CLASS
# else
#  define TCL_STORAGE_CLASS DLLIMPORT
# endif
#endif

That seems very correct. But at the end of tcl.h there was:

#undef TCL_STORAGE_CLASS
#define TCL_STORAGE_CLASS

EXTERN int              Tcl_AppInit _ANSI_ARGS_((Tcl_Interp *interp));

#endif /* RESOURCE_INCLUDED */

#undef TCL_STORAGE_CLASS
#define TCL_STORAGE_CLASS DLLIMPORT

As I understood, to define the Tcl_AppInit TCL_STORAGE_CLASS must not be
defined. That's ok, but redefining TCL_STORAGE_CLASS after that looked
wrong for me, as it should be as in the top of the file. So I changed
it like in the top. Then I was able to build wish with just linking
against the stub library and no undefined reference occured.

> I figured out that this was due to the missing -ltcl81 in the buildline
> for the libtk81.dll. So I added that and then ... everything compiled
> ok. Then I installed everything in a temporary directory and tried to
> run it. tclsh81.exe semmed to be ok but when I ran wish81.exe I got
> a core. Loaded wish81.exe into gdb and run it. Following the output:

<snip>

Ok this was obviously the wrong approach linking with -ltcl81 and stub
lib together and was the reason for the core to happen. I now can run
it ok.

But a another little problem occured. There is no console input after
I started wish81.exe. When I start the cygwish80.exe coming with
b20.1 a console window pops up. I examined code again and found the
problem to be in tk8.1/win/winMain.c. There are two entry points in
there, one is main() and the other is WinMain(). If main() is called
(what is obviously done by cygwin) then before Tk_Main() is called
a variable consoleRequired is set to FALSE. If I start wish81.exe in
gdb and set this variable to TRUE before call to Tk_Main() a
console window pops up. In WinMain() the consoleRequired is TRUE
before call to Tk_Main(). My question is now, what to do:

1.) change code in main() for cygwin to set consoleRequired to TRUE
2.) Find a possibility to get WinMain be called (Any advise)

Can anybody help me on this?

TIA
Tommy

--
------------------------------------------------------------------------
Thomas Kowatsch                      | - Senior Software Engineer -
Switching Test Solutions AG          | mailto: thomas DOT kowatsch AT stest DOT ch
Wavetek Wandel & Goltermann Divison5 | web   : http://www.stest.com
Friesenbergstr. 75                   | Phone : +41 1 454-6731
CH-8055 Zuerich                      | FAX   : +41 1 454-6612




--
Want to unsubscribe from this list?
Send a message to cygwin-unsubscribe AT sourceware DOT cygnus DOT com

- Raw text -


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