Skip to Content.
Sympa Menu

freetds - Re: [freetds] freetds and windows

freetds AT lists.ibiblio.org

Subject: FreeTDS Development Group

List archive

Chronological Thread  
  • From: Brett <generica AT email.com>
  • To: FreeTDS Development Group <freetds AT lists.ibiblio.org>
  • Subject: Re: [freetds] freetds and windows
  • Date: Sun, 10 Apr 2005 07:59:16 +1000 (EST)




On Sat, 9 Apr 2005, James K. Lowden wrote:

Brett <generica AT email.com> wrote:

Using dblib, I got the client program working perfectly. It could talk
to the ms sql server, get the results back, and work as I'd hoped.

The next plan was to compile it under windows, which I thought would be
straightforward. We already had the system compiling under windows,
with faked calls for the sql stuff, so it was just a case of using the
freetds code, and linking it in with the windows libraries.

Ah, but it is not straightforward. :-( As you found, the VC++ project in
the win32 directory builds the ODBC driver only. If you update it to
build db-lib, I would be glad to include your version in the main
distribution.


So does that mean, in it's current state, this won't work under windows ?

I went into the win32 directory, used msvc to load the projects, and
compiled dblib.lib and libTDS.lib ... compiled and linked those into our

software ( also had to link shell32.lib, due to some unresolved symbols
)

shell32.lib? That's a surprise. What does db-lib need from that?


from memory, something about finding a filename's path from desktop, or some odd windows function.

Went to run it, and with the aid of printfs, found that it initialised
the library fine, but at the following call, it just terminates

erc = dbsqlsend(dbproc);

The function is provided by dblib.c:

$ cd build/src/dblib/.libs
$ file * |grep ELF | awk -F: '{print $1}' |xargs nm -o |grep dbsqlsend
dblib.o:00006f68 T dbsqlsend
libsybdb.so.5.0:0000ec5c T dbsqlsend

Can you run your test in the debugger and find out where it dies? Does
TDSDUMP tell you anything? If the process dies sending the login packet,
try TDSVER=4.2. TDS 4.2 login packets are logged by TDSDUMP, so you
should at least see that much in your log.


I've never had any luck debugging this program, since it is not straightforward c, but a mix of c and prolog, compiled by a prolog compiler into an executable. Generally debuggers 'just don't work' with it :(

I'll try some dumping and see what that shows

thanks,

/ Brett




Archive powered by MHonArc 2.6.24.

Top of Page