Skip to Content.
Sympa Menu

freetds - Re: [freetds] Cross compilation, warnings and errors

freetds AT lists.ibiblio.org

Subject: FreeTDS Development Group

List archive

Chronological Thread  
  • From: Luis Lavena <luislavena AT gmail.com>
  • To: FreeTDS Development Group <freetds AT lists.ibiblio.org>
  • Subject: Re: [freetds] Cross compilation, warnings and errors
  • Date: Tue, 25 Jan 2011 12:00:22 -0300

On Tue, Jan 25, 2011 at 2:34 AM, James K. Lowden <jklowden AT freetds.org> wrote:
> On Mon, 24 Jan 2011 13:09:45 -0300
> Luis Lavena <luislavena AT gmail.com> wrote:
>
>> Perhaps my english is not accurate, but what I pointed out is that
>> during FreeTDS cross compilation I received the compilation error, not
>> anything else.
>
> There seems to be a rule on the Internet that anyone concerned that their
> English is unclear in fact writes perfectly clearly.  :-)
>
> We're both a little confused.  I didn't realize bsqldb.c included
> sqlfront.h (it shouldn't).
>

Thank you, the thing is that I'm not a native english speaker, so
sometimes I fail to express in words my thoughts about one specific
problem.

That happen to me in the past, so sometimes I double check ;-)

> But, when I build bsqdb, I don't see the symbol redefinition problem on
> Linux, Win32, or Win64.  (The latter two built using Microsoft's compiler
> du jour.)
>

Asked about this to mingw-w64 project, which is the one exposing this issue:

https://sourceforge.net/mailarchive/forum.php?thread_name=AANLkTinuvHqhFFZAJCXfQe_D2Et67jO9Q5%2BZZfUWMf1B%40mail.gmail.com&forum_name=mingw-w64-public

winscard.h is not present in mingw.org compiler, so that is why
LPCBYTE is not defined.

>
> Correct: LPCBYTE is defined unconditionally as a typedef.  Microsoft's
> sqlfront.h does the same thing.  I'm saying that's OK; if you have a
> symbol-redefinition error, it's better not to include the *other*
> definition.  This code would *not* be correct in sqlfront.h:
>
>        #ifndef LPCBYTE
>        #define LPCBYTE /* ... */
>        #endif
>
> because such code *assumes* the prior definition is equivalent to the one
> it would define itself.  That's not a safe assumption: LPCBYTE has no
> commonly recognized meaning; there's no guarantee that the prior definition
> conforms to FreeTDS's requirements.
>
> My advice, then:
>
> 1.  Substitute sybfront.h for sqlfront.h in src/apps/bsqldb.c.  I think
> that will fix the problem.
>
> 2.  If not, look for a way to exclude unneeded defintions when including
> windows.h.  When using Microsoft's version, I define WINDOWS_LEAN_AND_MEAN
> before including windows.h.  What you'd need for mingw I don't know.
>

I wish there was a modern VCS (Subversion at least) so I can provide
patches to this :'(

Thank you again for your time and your responses.
--
Luis Lavena
AREA 17
-
Perfection in design is achieved not when there is nothing more to add,
but rather when there is nothing more to take away.
Antoine de Saint-Exupéry




Archive powered by MHonArc 2.6.24.

Top of Page