Connecting Tech Pros Worldwide Forums | Help | Site Map

sqlext.h - ODBC link time error - dev-c++ IDE with mingw compiler

mike
Guest
 
Posts: n/a
#1: Aug 28 '05
trying the following code to test SQL connection to MS SQL server using
machine DNS name.

receiving errors:
[linker error] undefined reference to 'SQLAllocEnv@4'
[linker error] undefined reference to 'SQLAllocConnect@8'
(etc. for all SQL function calls in the code)

using Dev-C++ 4.9.9.2 and the latest mingw WindowsAPI package (where
the sql header files are)

I've found others who have had the same problem, but no solution -
going nuts!

test code:

#include <windows.h>
#include <sqlext.h>
#include <cstdlib>
#include <iostream>

int main(int argc, char *argv[])
{
HENV hEnv = NULL; // Env Handle from SQLAllocEnv()
HDBC hDBC = NULL; // Connection handle
HSTMT hStmt = NULL;// Statement handle
UCHAR szDSN[SQL_MAX_DSN_LENGTH] = "mydsn";// Data Source Name
buffer
UCHAR szUID[13] = "username";// User ID buffer
UCHAR szPasswd[7] = "passwd";// Password buffer
UCHAR szModel[128];// Model buffer
SDWORD cbModel;// Model buffer bytes recieved
UCHAR szSqlStr[128]= "SELECT test FROM testtable where test =
'test_success'";

RETCODE retcode;

// Allocate memory for ODBC Environment handle
SQLAllocEnv (&hEnv);

// Allocate memory for the connection handle
SQLAllocConnect (hEnv, &hDBC);

// Connect to the data source "szDSN" using userid and password.
retcode = SQLConnect (hDBC, szDSN, SQL_NTS, szUID, SQL_NTS, szPasswd,
SQL_NTS);

if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO)
{
// Allocate memory for the statement handle
retcode = SQLAllocStmt (hDBC, &hStmt);

// Prepare the SQL statement by assigning it to the statement
handle
retcode = SQLPrepare (hStmt, szSqlStr, sizeof (szSqlStr));

// Execute the SQL statement handle
retcode = SQLExecute (hStmt);

// Project only column 1 which is the models
SQLBindCol (hStmt, 1, SQL_C_CHAR, szModel, sizeof(szModel),
&cbModel);

// Get row of data from the result set defined above in the
statement
retcode = SQLFetch (hStmt);

// Free the allocated statement handle
SQLFreeStmt (hStmt, SQL_DROP);

// Disconnect from datasource
SQLDisconnect (hDBC);
}

std::cout << retcode << "\n";

// Free the allocated connection handle
SQLFreeConnect (hDBC);

// Free the allocated ODBC environment handle
SQLFreeEnv (hEnv);
system("PAUSE");
return EXIT_SUCCESS;
}


Gianni Mariani
Guest
 
Posts: n/a
#2: Aug 28 '05

re: sqlext.h - ODBC link time error - dev-c++ IDE with mingw compiler


mike wrote:[color=blue]
> trying the following code to test SQL connection to MS SQL server using
> machine DNS name.
>
> receiving errors:
> [linker error] undefined reference to 'SQLAllocEnv@4'
> [linker error] undefined reference to 'SQLAllocConnect@8'
> (etc. for all SQL function calls in the code)[/color]

This is off-topic here. Try an MSSQL group.

It looks like you're missing a library in your link phase.
harris.pc@gmail.com
Guest
 
Posts: n/a
#3: Aug 29 '05

re: sqlext.h - ODBC link time error - dev-c++ IDE with mingw compiler


This is actually a well known mingw problem with DLLs, and its
relatively simple to fix. People who use MySQL know this problem well:

http://www.emmestech.com/software/cy...43/moron1.html

http://mywebpage.netscape.com/yongweiwu/stdcall.htm

http://dev.mysql.com/doc/mysql/en/wi...compiling.html

http://lists.trolltech.com/qt-intere...ad00014-0.html

see ya
Paul

mike
Guest
 
Posts: n/a
#4: Aug 30 '05

re: sqlext.h - ODBC link time error - dev-c++ IDE with mingw compiler


I was able to figure it out based on the sources you referenced. Thank
you very much.

Closed Thread