From: *jeffdb AT netzone DOT nospam DOT com (Mikey) Subject: Re: Where to find gettimeofday(), localtime()? 18 Jun 1997 15:37:52 -0700 Approved: cygnus DOT gnu-win32 AT cygnus DOT com Distribution: cygnus Message-ID: <33a85112.5076956.cygnus.gnu-win32@smtp.netzone.com> References: <199706181220 DOT OAA20498 AT bombadill DOT forwiss DOT uni-passau DOT de> Reply-To: *jeffdb AT netzone DOT nospam DOT com Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Original-To: Roland Geier , gnu-win32 AT cygnus DOT com In-Reply-To: <199706181220.OAA20498@bombadill.forwiss.uni-passau.de> X-Mailer: Forte Agent 1.01/32.397 Original-Sender: owner-gnu-win32 AT cygnus DOT com It's almost always easier to let the compiler driver pick up the appropriate libraries, the link line below should read g++ -Wl,--verbose,--dll,-e,_dll_entry AT 12,--base-file=tmp.base -o DateTime.dll \ Date.o DateTimePkgInit.o Month.o Time.o TinyTime.o WeekDay.o Year.o fixup.o -ltcl76 although in my specs file, I have added fixup.o to the startup files, as %{dll:/usr/local/lib/fixup.o} and the other dll stuff to link as %{dll:--dll -e _dll_entry AT 12} that way any time I am compiling a dll, all I have to do is use gcc -dll X.o y.o z.o and don't have to worry about the details. also I think you need to surround gettimeofday() and localtime() with extern "C" { struct tm *localtime(time_t *timer); int gettimeofday(struct timeval*, struct timezone*); } but that I'm not sure of, see how it works. also you need to produce and link in a .exp file presumably DateTime.exp, otherwise you can't link with the .dll -970404/../../../../i386-cygwin32/lib/libcygwin.a(libcmain.o)(.text+0x1e):libcmain.cc: undefined reference to `WinMain AT 16' this you can ignore, it won't stop the link, unless you don't have a int main()( return 0;} in your fixup.c On Wed, 18 Jun 1997 14:20:22 +0200 (MET DST), you wrote: >Hi! > >I'm currently working on a port of some date/time-Classes from Unix to >NT. The time-class 'class Time' uses the functions 'gettimeofday' and >'localtime'. Therefore I *do* include 'time.h' and 'sys/time.h' in the >'Time.cc'-source-file, but have to declare the functions 'localtime' >and 'gettimeofday' to be of external linkage explicitly to get the >file compiled without warnings: > >-------------------- snip -------------------- >: >: >#include >#include > >#ifdef __CYGWIN32__ > extern struct tm *localtime(time_t *timer); > extern int gettimeofday(struct timeval*, struct timezone*); >#endif >: >-------------------- snip -------------------- > >I guess that's not how it should be :-(. The subseqent link-call > >> ld.exe --verbose --dll -o DateTime.dll -e _dll_entry AT 12 \ >> -LC:\Programme\gnuwin32\b18\H-i386-cygwin32\lib\gcc-lib\i386-cygwin32\cygnus-2.7.2-970404 \ >> -LC:/Programme/gnuwin32/b18/H-i386-cygwin32/lib/gcc-lib \ >> -LC:/Programme/gnuwin32/b18/H-i386-cygwin32/lib/gcc-lib/i386-cygwin32/cygnus-2.7.2-970404/../../../../i386-cygwin32/lib \ >> -LC:/Programme/gnuwin32/b18/H-i386-cygwin32/lib/gcc-lib/i386-cygwin32/cygnus-2.7.2-970404/../../.. \ >> -LC:/Programme/gnuwin32/b18/H-i386-cygwin32/lib/gcc-lib/i386-cygwin32/cygnus-2.7.2-970404 \ >> --base-file=tmp.base Date.o DateTimePkgInit.o Month.o Time.o TinyTime.o WeekDay.o Year.o fixup.o \ >> libtcl76.a -lstdc++ -lcygwin -lgcc -lkernel32 > >to generate a dll produces the following undefined-reference-errors: > >> Time.o: In function `Time::Initialize(void)': >> //majestix/geier/project/packages/cms++-2.0/src/types/Time.cc:62: undefined refe >> rence to `gettimeofday(timeval *, timezone *)' >> Time.o: In function `Time::Now(void)': >> //majestix/geier/project/packages/cms++-2.0/src/types/Time.cc:70: undefined refe >> rence to `gettimeofday(timeval *, timezone *)' >> Time.o: In function `Time::BreakDown(int &, WeekDay &, Month &, int &, int &, in >> t &, int &, int &) const': >> //majestix/geier/project/packages/cms++-2.0/src/types/Time.cc:99: undefined refe >> rence to `localtime(long *)' >> C:/Programme/gnuwin32/b18/H-i386-cygwin32/lib/gcc-lib/i386-cygwin32/cygnus-2.7.2 >> -970404/../../../../i386-cygwin32/lib/libcygwin.a(libcmain.o)(.text+0x1e):libcma >> in.cc: undefined reference to `WinMain AT 16' > >Could someone tell me what libraries are to be linked to get the two >time-related functions referenced correctly? What about the undefined >reference to 'WinMain AT 16'??? > >Thx in advance, > >--- Roland. > >--- >Roland Geier Phone: ++49 (8505) 92181 >Universitaet Passau, GER Fax: ++49 (8505) 922311 >Lehrstuhl Prof. Dr. Donner geier AT forwiss DOT uni-passau DOT de >D-94032 Passau http://www.uni-passau.de/~geier/ > >- >For help on using this list (especially unsubscribing), send a message to >"gnu-win32-request AT cygnus DOT com" with one line of text: "help". > - For help on using this list (especially unsubscribing), send a message to "gnu-win32-request AT cygnus DOT com" with one line of text: "help".