This is the mail archive of the
cygwin@cygwin.com
mailing list for the Cygwin project.
Re: error trying to build very simple dll
- To: Robert Cordingley <cord at ragesoft dot com>
- Subject: Re: error trying to build very simple dll
- From: Mumit Khan <khan at NanoTech dot Wisc dot EDU>
- Date: Wed, 11 Jul 2001 16:03:15 -0500 (CDT)
- cc: cygwin at cygwin dot com
- Reply-To: Mumit Khan <khan at NanoTech dot Wisc dot EDU>
On Wed, 11 Jul 2001, Robert Cordingley wrote:
> Trying to build a very simple little dll, I get the following error:
>
> $ dlltool --def gettz.def --output-exp gettz.exp --output-lib gettz.a
> --dllname gettz.dll
> $ gcc -c gettz.c
> $ ld -o gettz.dll gettz.exp gettz.o
First rule of using gcc on any platform -- unless you have a very good
reason and know what you're doing, never use "ld" to link, but *always*
use gcc or one of the other compiler drivers. Following this rule is
even more important on platforms such as linux (if you want correct
dynamic linker linked in), Cygwin (if you want correct libraries linked
in), etc.
That said, you can do the following to build your DLL.
$ gcc -c gettz.c
$ gcc -shared -o gettz.dll -Wl,--out-implib,gettz.a gettz.def gettz.o
I'm assuming that you already have a proper gettz.def; if not, you can
either (1) use __declspec(dllexport), or (2) create one by hand.
> ld: warning: cannot find entry symbol _mainCRTStartup; defaulting to 00401000
> gettz.o(.text+0xc):gettz.c: undefined reference to `time'
> gettz.o(.text+0x20):gettz.c: undefined reference to `localtime'
> gettz.o(.text+0x28):gettz.c: undefined reference to `_imp___tzname'
These show up because you are using ld, and it doesn't know what system
libraries to link in.
Regards,
Mumit
--
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/