Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > C++ > Linking error (cygwin, make, windows, sql)

Reply
Thread Tools

Linking error (cygwin, make, windows, sql)

 
 
PG
Guest
Posts: n/a
 
      03-08-2008
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(env, SQL_ATTR_ODBC_VERSION, (void *) SQL_OV_ODBC3, 0);

direction = SQL_FETCH_FIRST;
while(SQL_SUCCEEDED(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_WITH_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:ODBCTest.c.text+0x4a): undefined reference to
`_SQLAllocHandle@12'
ODBCTest.o:ODBCTest.c.text+0x70): undefined reference to
`_SQLSetEnvAttr@16'
ODBCTest.o:ODBCTest.c.text+0xca): undefined reference to
`_SQLDataSources@32'
collect2: ld returned 1 exit status
make: *** [ODBCTest.exe] Error 1


Things i have checked:
libodbc32.a exists in c:\cygwin\lib\w32api.
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 (_SQLAllocHandle@12,
_SQLSetEnvAttr@16 and _SQLDataSources@32) exist.

How can i fix these linking errors?

Thanks

PG
--
comp.lang.c.moderated - moderation address: http://www.velocityreviews.com/forums/(E-Mail Removed) -- 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.
 
Reply With Quote
 
 
 
 
Ian Collins
Guest
Posts: n/a
 
      03-17-2008
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.moderated - moderation address: (E-Mail Removed) -- 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.
 
Reply With Quote
 
 
 
 
Flash Gordon
Guest
Posts: n/a
 
      03-17-2008
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.moderated - moderation address: (E-Mail Removed) -- 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.
 
Reply With Quote
 
Barry Schwarz
Guest
Posts: n/a
 
      03-17-2008
On Sat, 8 Mar 2008 12:21:40 -0600 (CST), PG <(E-Mail Removed)> wrote:

>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.moderated - moderation address: (E-Mail Removed) -- 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.
 
Reply With Quote
 
John Bode
Guest
Posts: n/a
 
      03-20-2008
On Mar 8, 1:21 pm, PG <(E-Mail Removed)> wrote:
> 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.moderated - moderation address: (E-Mail Removed) -- 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.
 
Reply With Quote
 
John Bode
Guest
Posts: n/a
 
      03-20-2008
On Mar 8, 1:21 pm, PG <(E-Mail Removed)> wrote:
> 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.moderated - moderation address: (E-Mail Removed) -- 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.
 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
problems in vc++:Applying setting user breakpoint, unhandled exception ,linking error,runtime error manish C++ 1 04-02-2004 12:33 PM
Newbie Linking Error Jeff Schwab C++ 5 12-30-2003 05:56 AM
Linking error Kevin Grigorenko C++ 4 09-12-2003 07:46 PM
linking error pradeep C++ 2 09-06-2003 11:09 PM
Undefined Reference Error while linking with g++, STL on LINUX RU C++ 2 08-06-2003 03:28 PM



Advertisments