当前位置:  技术问答>linux和unix

链接ODBC的链接库时出问题

    来源: 互联网  发布时间:2016-02-28

    本文导语:  我的代码如下: #include  #include  #include  #include  #include  void check_return (RETCODE rc,               HENV henv,               HDBC hdbc,               HSTMT hstmt ) {   UCHAR state_str [SQL_MAX_MESSAGE_LENGTH]; ...

我的代码如下:
#include 
#include 
#include 
#include 
#include 

void
check_return (RETCODE rc,
              HENV henv,
              HDBC hdbc,
              HSTMT hstmt )
{
  UCHAR state_str [SQL_MAX_MESSAGE_LENGTH];
  SDWORD native_error;
  UCHAR  error_msg [SQL_MAX_MESSAGE_LENGTH];
  SWORD  error_msg_avail = SQL_MAX_MESSAGE_LENGTH - 1;
  SWORD  error_msg_len;
  RETCODE local_rc;

  if (rc != SQL_ERROR && rc != SQL_SUCCESS_WITH_INFO )
  {
    return;
  }


  local_rc = SQL_Error (henv,hdbc,hstmt,state_str,&native_error,error_msg,error_msg_avail,&error_msg_len);
  if (local_rc != SQL_SUCCESS && rc !=SQL_SUCCESS_WITH_INFO)
  {
    fprintf(stderr,"Uninterpretable error; exiting n");
    exit (EXIT_FAILURE);
  }

  if (rc == SQL_SUCCESS_WITH_INFO)
  {
    fprintf(stderr,"Fatal Error %s: %sn", state_str,error_msg);
    return;
  }

   fprintf(stderr,"Fatal Error %s: %sn",state_str,error_msg);
   exit (EXIT_FAILURE);
}

/*----------------------------------------------------------------------*/
int main (void)
{
    HENV henv = SQL_NULL_HENV;
    HDBC hdbc = SQL_NULL_HDBC;
    HSTMT hstmt = SQL_NULL_HSTMT;
    RETCODE rc;

    char buf[257];
    short buflen;

    printf ("Initialize the environment structure.n");
    SQLAllocEnv (&henv);

    printf ("Initialize the connection structure.n");
    SQLAllocConnect (henv,&hdbc);

    printf("Load the ODBC driver.n");
    rc = SQLDriverConnect (hdbc,0,"DSN=pdmtest;UID=nate;PWD=nate",SQL_NTS,(UCHAR*) buf,sizeof (buf),&buflen,SQL_DRIVER_COMPLETE);
    check_return (rc,henv,hdbc,hstmt);

    printf ("Initialize the statement structure.n");
    SQLAllocStmt (hdbc,&hstmt);

/*   now do something*/
    printf ("Creat table table "foo".n");
    rc = SQLExecdirect (hstmt,"CREATE TABLE foo (bar INTEGER)", SQL_NTS);
    check_return (rc, henv, hdbc, hstmt);

    printf ("Insert values into table "foo".n");
    rc = SQLExecdirect (hstmt,"INSERT INTO foo(bar) VALUES (1)", SQL_NTS);
    check_return (rc, henv, hdbc, hstmt);

    rc = SQLExecdirect (hstmt,"INSERT INTO foo(bar) VALUES (2)", SQL_NTS);
    check_return (rc, henv, hdbc, hstmt);

    rc = SQLExecdirect (hstmt,"INSERT INTO foo(bar) VALUES (3)", SQL_NTS);
    check_return (rc, henv, hdbc, hstmt);

    printf ("Drop table "foo".n");
    rc = SQLExecDirect (hstmt, "DROP TABLE foo", SQL_NTS);
    check_return (rc,henv,hdbc,hstmt);

/*  We're done:free resources and exit*/

   printf ("Free the statement handle.n");
   SQLFreeStmt (hstmt,SQL_DROP);

   printf ("Disconnect from the data source.n");
   SQLDisconnect (hdbc);

   printf ("Free the connection structure.n");
   SQLFreeConnect (hdbc);

   printf ("Free the environment structure.n");
   SQLFreeEnv (henv);

   printf ("Goodbye!n");
   exit (EXIT_SUCCESS);
}
运行如下命令:
[root@kaven pdm]# gcc vc.c -o vc -L /usr/local/mysql/lib/ -lmysqlclient -lz
然后包如下错误:
/tmp/ccQL24B7.o: In function `check_return':
vc.c:(.text+0x76): undefined reference to `SQL_Error'
/tmp/ccQL24B7.o: In function `main':
vc.c:(.text+0x169): undefined reference to `SQLAllocEnv'
vc.c:(.text+0x187): undefined reference to `SQLAllocConnect'
vc.c:(.text+0x1db): undefined reference to `SQLDriverConnect'
vc.c:(.text+0x21e): undefined reference to `SQLAllocStmt'
vc.c:(.text+0x245): undefined reference to `SQLExecdirect'
vc.c:(.text+0x291): undefined reference to `SQLExecdirect'
vc.c:(.text+0x2d1): undefined reference to `SQLExecdirect'
vc.c:(.text+0x311): undefined reference to `SQLExecdirect'
vc.c:(.text+0x35e): undefined reference to `SQLExecDirect'
vc.c:(.text+0x3a2): undefined reference to `SQLFreeStmt'
vc.c:(.text+0x3b9): undefined reference to `SQLDisconnect'
vc.c:(.text+0x3d0): undefined reference to `SQLFreeConnect'
vc.c:(.text+0x3e7): undefined reference to `SQLFreeEnv'
collect2: ld 返回 1
请问如何解决?

|
你写的有点复杂了,除非对这个很熟悉,或者正在做这个的,可能会调试。
我都是直接使用c编写链接mysql数据库的代码,没什么大问题啊。给你帖一段看看吧。
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 

FILE* flowlog;
MYSQL mysql;
MYSQL_RES *res;
MYSQL_ROW sqlrow;
struct in_addr  ipaddr;


int main(int argc, char *argv[])
{
int i;
struct tm *tm;
unsigned long timenum;
    char sqlstring[800];

sprintf(sqlstring,"select * from outlier;");

flowlog=fopen("/usr/local/apache2/htdocs/flow.html","w+"); //open the log file
if(flowlog==NULL)
printf("Open file failedn");
fprintf(flowlog,"   Netflow Security Analysis System  n");
fprintf(flowlog,"  Netflow Security Analysis System  ");
fflush(flowlog);
mysql_init(&mysql);
if(mysql_real_connect(&mysql,"localhost" ,"lijian", "lijian",  "netflow" ,3306,(char *)NULL,0)==NULL)
{
fprintf(flowlog,"Connetion failedn");
return 1;
}else
{
if(mysql_query(&mysql,sqlstring))
return 1;
res=mysql_store_result(&mysql);
if(res)
fprintf(flowlog,"%s:Retrived %lu rows
",sqlstring,(unsigned long) mysql_num_rows(res));


while(sqlrow=mysql_fetch_row(res))

fprintf(flowlog," %s ", sqlrow[0]);
fprintf(flowlog," %s ", sqlrow[1]);
fflush(flowlog);
}
mysql_free_result(res);
}
   
        fprintf(flowlog,"");
        fflush(flowlog);

fprintf(flowlog,"");
mysql_close(&mysql);
fclose(flowlog);
return 0;
}

|
库文件存在么?

    
 
 

您可能感兴趣的文章:

  • xlc编译最后链接时出现未定义的问题
  • SOS ,在UNIX下编译C++程序时出现链接错误:未下义的符号,但函数库里有这些函数,不知道为什么?
  • 帮忙看看,用JSP链接mysql从数据库查数据时出现的问题????
  • 在HP-UX上编译的C程序,链接时出现下面的错误,有谁遇到过类似现象么?
  • 动态库链接 变为 静态库链接问题
  • .a文件的动态链接和静态链接问题
  • linux下什么函数是用来“创建软链接和硬链接的呢“有么,今天突然想到这个问题。。
  • 关于软链接和硬链接的问题
  • 链接文件的复制问题,重问
  • 请问:用emacs修改链接文件的问题
  • linux链接问题!!
  • 硬链接问题
  • so动态链接库的问题
  • 关于代码模块链接的问题
  • 如何覆盖一个已有的软链接,简单问题困扰很长时间,解决马上给分?
  • 硬链接软连结-问题
  • 请教关于动态链接库的问题
  • 硬链接的问题。。
  • aCC 链接库时顺序问题
  • makefile文件的链接问题。
  • 链接库的问题
  • 删除硬链接的问题
  • 修改链接时的搜索地址(简单问题)
  • apache符号链接 权限问题
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • HTML 5 <base> 标签-规定页面中所有链接的基准 url
  • 如何在一个静态链接库中链接另一个静态链接库?
  • HTML 5 <a>定义超链接标签
  • 未使用链接器输入文件,因为链接尚未完成
  • HTML 超链接详细介绍
  • 讨论一下UNIX中的硬链接与符号链接
  • HTML URL 链接 ( 统一资源定位器 )定义及用法详细介绍
  • linux中静态链接库调用了另一个静态链接库
  • ​Docker 容器数据管理,链接容器,构建私有库
  • 如何判断是否是硬链接 或者是软链接 还是源文件
  • 链接器链接目标文件和printf.o是怎么连接的
  • 编译静态链接库,其中使用了其它链接库,该如何写makefile
  • linux中都有哪些链接方式,创建链接的命令是什么?
  • 什么是符号链接,什么是硬链接?他们的区别是什么?
  • 怎样在点击某个链接时弹出YES/NO对话框?只有yes时才进入此链接。
  • linux下静态库使用:"未使用链接器输入文件,因为链接尚未完成"
  • jquery代码-在弹出窗口中打开链接和在选项卡中打开链接
  • 急:请问SSH2链接是什么意思?在windows终端怎样具体操作来通过SSH2链接管理linux服务器?
  • 求助,长链接与短链接的区别
  • aaa.jsp有如下链接,当单击该链接时将id值传递给bbb.jsp,怎样在bbb.jsp中引用这个id值?
  • 当鼠标移过链接和图象映射区时,如何在这个链接旁边显示一个文本区,谢谢!


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3