This is the mail archive of the cygwin@cygwin.com mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: error trying to build very simple dll


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/


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]