From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 29553 invoked by alias); 1 Jul 2005 09:46:43 -0000 Mailing-List: contact cygwin-help@cygwin.com; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner@cygwin.com Mail-Followup-To: cygwin@cygwin.com Received: (qmail 29540 invoked by uid 22791); 1 Jul 2005 09:46:37 -0000 Received: from host217-40-213-68.in-addr.btopenworld.com (HELO SERRANO.CAM.ARTIMI.COM) (217.40.213.68) by sourceware.org (qpsmtpd/0.30-dev) with ESMTP; Fri, 01 Jul 2005 09:46:37 +0000 Received: from mace ([192.168.1.25]) by SERRANO.CAM.ARTIMI.COM with Microsoft SMTPSVC(6.0.3790.211); Fri, 1 Jul 2005 10:46:46 +0100 From: "Dave Korn" To: "'cygwin'" Subject: RE: undefined reference to `_CAPI_INSTALLED@0', why? Date: Fri, 01 Jul 2005 09:46:00 -0000 MIME-Version: 1.0 Content-Type: text/plain; charset="US-ASCII" Content-Transfer-Encoding: 7bit In-Reply-To: <42C45145.4010202@familiehaase.de> Message-ID: X-SW-Source: 2005-07/txt/msg00023.txt.bz2 ----Original Message---- >From: Gerrit P. Haase >Sent: 30 June 2005 21:09 > Ok, I try to build a Cygwin application that requires CAPI functions > which are installed with the drivers for an ISDN card, the DLL is named > capi2032.dll, I have an import library which comes from the manufacturer > AVM but this contains symbols not included in the DLL or elsewhere. > > In the .lib library are these symbols: > > $ nm capi2032.lib | grep ' T ' > 00000000 T _CAPI_INSTALLED@0 That's a stdcall symbol. > in the import library I created are these symbols: > > $ nm libcapi2032.dll.a | grep ' T ' > 00000000 T _CAPI_INSTALLED That's a cdecl symbol. > Where does the @0 in capi20.o: _CAPI_INSTALLED@0 came from? It comes from it being a stdcall symbol. > I see in the source: > > extern DWORD APIENTRY CAPI_INSTALLED (void); > > unsigned CAPI20_ISINSTALLED (void) { > #if defined(CYGWIN) || defined(WIN32) > return (unsigned)CAPI_INSTALLED () == 0; > #elif defined(LINUX) > return capi20_isinstalled() == CapiNoError; > #endif > > > So why does the compiler creats a reference to _CAPI_INSTALLED@0 or > is it the linker who wants to resolve CAPI_INSTALLED with @0 attached. Has the definition of APIENTRY has changed between the mfr's build from which the import library came and the build from which you generated your import lib? cheers, DaveK -- Can't think of a witty .sigline today.... -- Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple Problem reports: http://cygwin.com/problems.html Documentation: http://cygwin.com/docs.html FAQ: http://cygwin.com/faq/