Linking error (cygwin, make, windows, sql)

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • PG

    Linking error (cygwin, make, windows, sql)

    I am trying to compile a simple ODBC and C example on Windows XP SP2.
    I have Cygwin_NT 5.1.

    This is the code (obtained from
    http://www.easysoft.com/developer/la...rial.html#dm_f...)
    i am attempting to compile.

    ODBCTest.c

    #include <stdio.h>
    #include <windows.h>
    #include <sql.h>
    #include <sqlext.h>

    main() {
    SQLHENV env;
    char dsn[256];
    char desc[256];
    SQLSMALLINT dsn_ret;
    SQLSMALLINT desc_ret;
    SQLUSMALLINT direction;
    SQLRETURN ret;

    SQLAllocHandle( SQL_HANDLE_ENV, SQL_NULL_HANDLE , &env);
    SQLSetEnvAttr(e nv, SQL_ATTR_ODBC_V ERSION, (void *) SQL_OV_ODBC3, 0);

    direction = SQL_FETCH_FIRST ;
    while(SQL_SUCCE EDED(ret = SQLDataSources( env, direction,
    dsn, sizeof(dsn), &dsn_ret,
    desc, sizeof(desc),
    &desc_ret))) {
    direction = SQL_FETCH_NEXT;
    printf("%s - %s\n", dsn, desc);
    if (ret == SQL_SUCCESS_WIT H_INFO) printf("\tdata truncation\n");
    }

    }

    Makefile

    CC=gcc
    INCPATH=-I/usr/include -Iinclude
    LIBS=-L. -lodbc32
    LD=ld
    all: clean ODBCTest.exe

    ODBCTest.o : ODBCTest.c
    $(CC) $(INCPATH) $(CFLAGS) -o ODBCTest.o -c ODBCTest.c
    ODBCTest.exe : ODBCTest.o
    $(CC) $(LIBS) $(CFLAGS) -o ODBCTest.exe ODBCTest.o
    clean:
    -rm *.o
    -rm *.exe


    Make output and Errors:

    $ make
    rm *.o
    rm *.exe
    rm: cannot remove `*.exe': No such file or directory
    make: [clean] Error 1 (ignored)
    gcc -I/usr/include -Iinclude -o ODBCTest.o -c ODBCTest.c
    gcc -L. -lodbc32 -o ODBCTest.exe ODBCTest.o
    ODBCTest.o:ODBC Test.c:(.text+0 x4a): undefined reference to
    `_SQLAllocHandl e@12'
    ODBCTest.o:ODBC Test.c:(.text+0 x70): undefined reference to
    `_SQLSetEnvAttr @16'
    ODBCTest.o:ODBC Test.c:(.text+0 xca): undefined reference to
    `_SQLDataSource s@32'
    collect2: ld returned 1 exit status
    make: *** [ODBCTest.exe] Error 1


    Things i have checked:
    libodbc32.a exists in c:\cygwin\lib\w 32api.
    If i remove the above lib, i get a "lib not found" kind of error when
    i run make, meaning this is the lib make is using and there is no path
    issue.
    if i edit libodbc32.a in a binary editor, i can see the all the three
    functions mentioned in the error (_SQLAllocHandl e@12,
    _SQLSetEnvAttr@ 16 and _SQLDataSources @32) exist.

    How can i fix these linking errors?

    Thanks

    PG
    --
    comp.lang.c.mod erated - moderation address: clcm@plethora.n et -- you must
    have an appropriate newsgroups line in your header for your mail to be seen,
    or the newsgroup name in square brackets in the subject line. Sorry.
  • Ian Collins

    #2
    Re: Linking error (cygwin, make, windows, sql)

    PG wrote:
    I am trying to compile a simple ODBC and C example on Windows XP SP2.
    I have Cygwin_NT 5.1.
    >
    Why cross-post this to three groups where it is off topic? Try one of
    the many windows programming groups.

    --
    Ian Collins.
    --
    comp.lang.c.mod erated - moderation address: clcm@plethora.n et -- you must
    have an appropriate newsgroups line in your header for your mail to be seen,
    or the newsgroup name in square brackets in the subject line. Sorry.

    Comment

    • Flash Gordon

      #3
      Re: Linking error (cygwin, make, windows, sql)

      PG wrote, On 08/03/08 18:21:
      I am trying to compile a simple ODBC and C example on Windows XP SP2.
      I have Cygwin_NT 5.1.
      Since you are not using C why cross-post to a C++ group?
      This is the code (obtained from
      http://www.easysoft.com/developer/la...rial.html#dm_f...)
      i am attempting to compile.
      ODBC is not topical here since it is not standard C. There are, however,
      mailing lists for unixODBC, see the unixODBC web site for details. For
      the MS implementation there are plenty of Microsoft groups.

      <snip>
      How can i fix these linking errors?
      How to drive your tools to link to non-standard libraries is also not
      topical here. However, there are Cygwin mailing lists. However I suggest
      you try specifying the libraries you need after the object files that
      reference them.
      --
      Flash Gordon
      --
      comp.lang.c.mod erated - moderation address: clcm@plethora.n et -- you must
      have an appropriate newsgroups line in your header for your mail to be seen,
      or the newsgroup name in square brackets in the subject line. Sorry.

      Comment

      • Barry Schwarz

        #4
        Re: Linking error (cygwin, make, windows, sql)

        On Sat, 8 Mar 2008 12:21:40 -0600 (CST), PG <gosavip@gmail. comwrote:
        >I am trying to compile a simple ODBC and C example on Windows XP SP2.
        >I have Cygwin_NT 5.1.
        >
        >This is the code (obtained from
        >http://www.easysoft.com/developer/la...rial.html#dm_f...)
        You will probably have beeter asking on the site you got the code from
        or a newsgroup where ODBC and/or Windows is topical.


        Remove del for email
        --
        comp.lang.c.mod erated - moderation address: clcm@plethora.n et -- you must
        have an appropriate newsgroups line in your header for your mail to be seen,
        or the newsgroup name in square brackets in the subject line. Sorry.

        Comment

        • John Bode

          #5
          Re: Linking error (cygwin, make, windows, sql)

          On Mar 8, 1:21 pm, PG <gosa...@gmail. comwrote:
          I am trying to compile a simple ODBC and C example on Windows XP SP2.
          I have Cygwin_NT 5.1.
          >
          Note that questions about ODBC, cygwin, XP, etc. really aren't topical
          here (your question isn't about the C language as such, which is what
          this group focuses on). In the future, you should direct such
          questions to newsgroups devoted to embedded SQL or ODBC programming.
          However, I think I know the answer to your problem.

          [snip]
          Makefile
          >
          CC=gcc
          INCPATH=-I/usr/include -Iinclude
          LIBS=-L. -lodbc32
          I suspect you need to add the path to the libodbc32.a library to your
          LIBS variable, like so:

          -L/cygdrive/c/lib/w32api

          Give that a shot, let me know if it works.
          --
          comp.lang.c.mod erated - moderation address: clcm@plethora.n et -- you must
          have an appropriate newsgroups line in your header for your mail to be seen,
          or the newsgroup name in square brackets in the subject line. Sorry.

          Comment

          • John Bode

            #6
            Re: Linking error (cygwin, make, windows, sql)

            On Mar 8, 1:21 pm, PG <gosa...@gmail. comwrote:
            I am trying to compile a simple ODBC and C example on Windows XP SP2.
            I have Cygwin_NT 5.1.
            >
            Note that questions about ODBC on Windows using Cygwin are not topical
            for this newsgroup; our focus is on the C language itself, not
            applications using C. However, I think I know what your problem is:


            [snip]
            >
            Makefile
            >
            CC=gcc
            INCPATH=-I/usr/include -Iinclude
            LIBS=-L. -lodbc32
            You need to specify the path to the libodbc32.a library, otherwise it
            will only look in the standard library path. Add the following to
            your LIBS variable:

            -L/cygdrive/c/cygwin/lib/w32api

            I think that's the right path, anyway.
            --
            comp.lang.c.mod erated - moderation address: clcm@plethora.n et -- you must
            have an appropriate newsgroups line in your header for your mail to be seen,
            or the newsgroup name in square brackets in the subject line. Sorry.

            Comment

            Working...