DLL calling a DLL: undefined reference when linking.
Wil Hunt
wilh@gladstone.uoregon.edu
Sun Feb 23 02:59:00 GMT 2003
"Elfyn McBratney" <elfyn-cygwin@exposure.org.uk> wrote in message
news:031a01c2dadb$bf7b0a40$666d86d9@webdev...
> > I think I'm making marvelous progress. Unfortunately, I'm getting
an
> > error that doesn't make sense:
> >
> > $g++ -shared -mno-cygwin -o dllhello.dll dllhello.o
> > other.dll -Wl,--out-implib,libdllhello.a -Wl,--enable-stdcall-fixup
> > Creating library file: libdllhello.a
> > dllhello.o(.text+0x164):dllhello.C: undefined reference to `InitAPI@4'
> >
> > In my source code, the offending call is:
> >
> > extern "C" PASCAL void InitAPI( int handle );
>
>
> Does dllhello.c include a header containing the prototype of InitAPI or
have
> a declaration of InitAPI? I think that's the gotcha.
>
>
> Regards,
>
> Elfyn McBratney
> elfyn@exposure.org.uk
> www.exposure.org.uk
Both the extern prototype and the function call are in dllhello.C. Thus it
does see the prototype. As a further note and after further testing, if I
use implib on other.dll, I get the export list. If I add an alias in the
.def file
InitAPI@4
InitAPI=InitAPI@4
then use dlltool to create the library, I can link against that library
successfully.
So it seems clear that --enable-stdcall-fixup isn't working as advertised.
Any idea why?
Wil
--
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/
More information about the Cygwin
mailing list