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

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
Message-ID: <033001c2dade$b7a76130$666d86d9@webdev>
From: "Elfyn McBratney" <elfyn-cygwin AT exposure DOT org DOT uk>
To: "cygwin" <cygwin AT cygwin DOT com>, "Wil Hunt" <wilh AT gladstone DOT uoregon DOT edu>
References: <b397t8$k0m$1 AT main DOT gmane DOT org> <031a01c2dadb$bf7b0a40$666d86d9 AT webdev> <b398id$o57$1 AT main DOT gmane DOT org>
Subject: Re: DLL calling a DLL: undefined reference when linking.
Date: Sun, 23 Feb 2003 01:56:00 -0000
MIME-Version: 1.0
X-Priority: 3
X-MSMail-Priority: Normal
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

What if you change the ordering, to say

extern "C" void PASCAL InitAPI( int handle );

? Or use __stdcall instead of PASCAL ?


Regards,

Elfyn McBratney
elfyn AT exposure DOT org DOT uk
www.exposure.org.uk



--
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