Re: Postgres 7.1RC4 ecpg can't find sqlca

From: Jason Tishler <Jason(dot)Tishler(at)dothill(dot)com>
To: Pgsql-Cygwin <pgsql-cygwin(at)postgresql(dot)org>
Cc: Michael Lemke <lemkemch(at)t-online(dot)de>
Subject: Re: Postgres 7.1RC4 ecpg can't find sqlca
Date: 2001-04-16 16:31:05
Message-ID: 20010416123105.I275@dothill.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-cygwin pgsql-ports

I would like to generate a patch for the Cygwin ESQL issue below. Which
solution is preferable -- the first or second? Is there a canonical ESQL
sample that I can use to find other problems, if any?

Thanks,
Jason

--
Jason Tishler
Director, Software Engineering Phone: +1 (732) 264-8770 x235
Dot Hill Systems Corp. Fax: +1 (732) 264-8798
82 Bethany Road, Suite 7 Email: Jason(dot)Tishler(at)dothill(dot)com
Hazlet, NJ 07730 USA WWW: http://www.dothill.com

--- Cut Here ---
On Sat, Apr 14, 2001 at 12:25:37PM +0200, Michael Lemke wrote:
> 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
> >>
> >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
>

In response to

Browse pgsql-cygwin by date

  From Date Subject
Next Message Jason Tishler 2001-04-16 17:07:18 Re: Re: initdb problem
Previous Message Jason Tishler 2001-04-16 16:24:52 Re: Postgres 7.1RC4 ecpg can't find sqlca

Browse pgsql-ports by date

  From Date Subject
Next Message Jason Tishler 2001-04-16 17:07:18 Re: Re: initdb problem
Previous Message Jason Tishler 2001-04-16 16:24:52 Re: Postgres 7.1RC4 ecpg can't find sqlca