delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/2001/04/14/06:26:42

Mailing-List: contact cygwin-help AT sourceware DOT cygnus DOT com; run by ezmlm
List-Subscribe: <mailto:cygwin-subscribe AT sources DOT redhat DOT com>
List-Archive: <http://sources.redhat.com/ml/cygwin/>
List-Post: <mailto:cygwin AT sources DOT redhat DOT com>
List-Help: <mailto:cygwin-help AT sources DOT redhat DOT com>, <http://sources.redhat.com/ml/#faqs>
Sender: cygwin-owner AT sources DOT redhat DOT com
Delivered-To: mailing list cygwin AT sources DOT redhat DOT com
Date: Sat, 14 Apr 2001 12:25:37 +0200
To: Jason Tishler <Jason DOT Tishler AT dothill DOT com>
CC: cygwin AT cygwin DOT com, Pgsql-Ports <pgsql-ports AT postgresql DOT org>
From: lemkemch AT t-online DOT de (Michael Lemke)
Subject: Re: Postgres 7.1RC4 ecpg can't find sqlca
X-Mailer: Opera 5.10 build 902
X-Priority: 3 (Normal)
Mime-Version: 1.0
Message-ID: <14oNFK-1jO9C4C@fwd06.sul.t-online.com>
X-Sender: 520098960173-0001 AT t-dialin DOT net

4/14/01 00:08:14, Jason Tishler <Jason DOT Tishler AT dothill DOT com> wrote:

>
>On Fri, Apr 13, 2001 at 11:02:23PM +0200, Michael Lemke wrote:
>> With the latest postgres release that came lately with cygwin I made my
>> very first attempt at writng an ESQL program (actually, at the moment it 
>> is just something I dowloaded).  Now when I link it can't find sqlca:
>> 
>> michael> gcc -I /usr/include/postgresql/  esql.c -lecpg -lpq
>> /f/cygwin~1/tmp/ccbnOeiG.o(.text+0x203):esql.c: undefined reference to `sqlca'
>> /f/cygwin~1/tmp/ccbnOeiG.o(.text+0x292):esql.c: undefined reference to `sqlca'
>> collect2: ld returned 1 exit status
>> 
>> ecpg made the declaration of sqlca 
>> 
>>   extern struct sqlca sqlca;
>
>I believe that the above is a bug in sqlca.h.  My WAG (without actually
>trying this) is that the above should be replaced by the following:
>
>#ifdef __CYGWIN__
>    extern __declspec(dllimport) struct sqlca sqlca;
>#else
>    extern struct sqlca sqlca;
>

Jason,

thanks a lot.  That did the trick.  I didn't try the one below.   It's up
to the experts to decide which way to go.

>or by
>
>#ifdef __CYGWIN__
>    extern DLLIMPORT struct sqlca sqlca;
>#else
>    extern struct sqlca sqlca;
>
>if c.h can be safely included.
>
>> I recompiled postgres and skipped stripping of the libraries.  Then I find
>> sqlca in ecpg.dll:
>> 
>> michael> nm /usr/bin/ecpg.dll | grep sqlca
>> c0586864 T _init_sqlca
>> c0587000 D _sqlca
>> c05870b0 d _sqlca_init
>
>Don't worry sqlca *is* exported from ecpg.dll:
>
>    $ objdump -p /usr/bin/ecpg.dll | fgrep sqlca
>            [  28] init_sqlca
>            [  29] sqlca
>
>> but not in libecpg.a:
>> 
>> michael> nm /usr/lib/libecpg.a | grep sqlca
>> 00000000 I __imp__sqlca
>> 00000000 I __imp__init_sqlca
>> 00000000 T _init_sqlca
>
>Actually, sqlca *is* in the import library but it is called
>"__imp__sqlca" as it should be.
>
>Does changing your sqlca.h as above fix your problem.  If so, then I
>will submit a patch to the pgsql-ports mailing list.
>
>Are there other ESQL related symbols that need the __declspec(dllimport)
>attribute too?

I don't know.  I am just trying to learn ESQL but I'll let you know if
I come across another one.


Thanks again,
Michael


--
Want to unsubscribe from this list?
Check out: http://cygwin.com/ml/#unsubscribe-simple

- Raw text -


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