delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/2003/02/23/10:03:06

Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm
List-Subscribe: <mailto:cygwin-subscribe AT cygwin DOT com>
List-Archive: <http://sources.redhat.com/ml/cygwin/>
List-Post: <mailto:cygwin AT cygwin DOT com>
List-Help: <mailto:cygwin-help AT cygwin DOT com>, <http://sources.redhat.com/ml/#faqs>
Sender: cygwin-owner AT cygwin DOT com
Mail-Followup-To: cygwin AT cygwin DOT com
Delivered-To: mailing list cygwin AT cygwin DOT com
X-Injected-Via-Gmane: http://gmane.org/
To: cygwin AT cygwin DOT com
From: "Wil Hunt" <wilh AT gladstone DOT uoregon DOT edu>
Subject: Re: DLL calling a DLL: undefined reference when linking.
Date: Sat, 22 Feb 2003 17:39:31 -0500
Lines: 45
Message-ID: <b398id$o57$1@main.gmane.org>
References: <b397t8$k0m$1 AT main DOT gmane DOT org> <031a01c2dadb$bf7b0a40$666d86d9 AT webdev>
X-Complaints-To: usenet AT main DOT gmane DOT org
X-MSMail-Priority: Normal
X-Newsreader: Microsoft Outlook Express 6.00.2800.1106
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1106

"Elfyn McBratney" <elfyn-cygwin AT exposure DOT org DOT uk> wrote in message
news:031a01c2dadb$bf7b0a40$666d86d9 AT 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 AT 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 AT exposure DOT org DOT 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 AT 4
InitAPI=InitAPI AT 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/

- Raw text -


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