藍森林首頁 | 返回主頁 | 本站地圖 | 站內搜索 | 聯繫信箱 |
 您目前的位置:首頁 > 自由軟件 > 技術交流 > 數 據 庫


    

藍森林 http://www.lslnet.com 2006年8月18日 9:58

我用Mysql C API編程時怎麼會這樣?

編譯時提示:
undefined reference to 'myaql_init'
undefined reference to 'myaql_real_connect'
undefined reference to 'myaql_close'

我最終的目的,是要編一個供其他程序調用,查詢數據庫的接口

我的代碼如下
#include <stdio.h>
#include "mysql.h"
#include "mysqlwrap.h"

#define host_name NULL //host to connect to (default=localhost)
#define user_name NULL //user name (default + your login name )
#define mypassword NULL //password (default=none)
#define port_num 0 //use default port
#define socket_name NULL //use default socket name
#define db_name NULL //database to use (default=none)

MYSQL *conn; /*ponter to connection handler */

int
main(int argc,char **argv)
{
conn=do_connect(host_name,user_name,mypassword,\
db_name,port_num,socket_name,0);
if(conn==NULL)
exit(1);

// do what i want to do here.

do_disconnect(conn);
exit(0);
}

----------------------------------
#ifndef __MYSQLWRAP_H
#define __MYSQLWRAP_H
void
print_error(MYSQL *conn,char *message)
{
fprintf(stderr,"%s\n",message);
if(conn!=NULL)
{
fprintf(stderr,"ERROR %u (%s)\n",mysql_errno(conn),mysql_error(conn));
}
}

MYSQL *
do_connect(char *host_name,char *user_name,char *password,char *db_name,\
unsigned int port_num,char *socket_name,unsigned int flags)
{
MYSQL *conn; /*pinter to connection handler */

conn=mysql_init (NULL); /*allocate,initialize connection handler */
if(conn==NULL)
{
print_error(NULL,"mysql_init() failed (probably out of memory)");
return(NULL);
}
#if defined(MYSQL_VERSION_ID) && MYSQL_VERSION_ID>=32200 /* 3.22 and up */
if(mysql_real_connect(conn,host_name,user_name,password,db_name,\
port_num,socket_name,flags)==NULL)
{
print_error(conn,"mysql_real_connect() failed");
return (NULL);
}
#else /*pre 3.22*/
if(mysql_real_connect(conn,host_name,user_name,password,db_name,\
port_num,socket_name,flags)==NULL)
{
print_error(conn,"mysql_real_connect() failed");
return (NULL);
}
if(db_name!=NULL) /* simulate effect of db_name parameter */
{
if(mysql_select_db(conn,db_name)!=0)
{
print_error(conn,"mysql_select_db() failed");
mysql_close(conn);
return(NULL);
}
}
#endif
return(conn); /*connection is established */
}

void
do_disconnect(MYSQL *conn)
{
mysql_close(conn);
}


#endif /* mysqlwrap.h */


-----------
紙上得來終覺淺,絕知此事要躬行。 --------一天到晚游泳的菜魚

Re: 我用Mysql C API編程時怎麼會這樣?

沒有找到庫。
編譯的時候加 -lmysqlclient




煩老兄幫我看一下我的編譯命令對嗎?

1.cc -I /usr/local/mysql/include -L/usr/local/mysql/lib -lmysqlclient client1.c
2.cc -c -I /usr/local/mysql/include -lmysqlclient client1.c
cc -o client1 client1.o -L/usr/local/mysql/lib -lmysqlclient
二種方法都跟6fish的一樣的提示!

hyj

Re: 煩老兄幫我看一下我的編譯命令對嗎?

老兄不在linux上吧?我在sco上也 是,後來裝了GUN的編譯器全好了。



GUN是不是就是gcc?我裝上去用gcc編譯還是不行呀!

你的mysql是什麼版本?
我的是3.21.26,如果你是更高版本的Mysql,能否告訴在我SCO下如何安裝?

hyj



Copyright © 1999-2000 LSLNET.COM. All rights reserved. 藍森林網站 版權所有。 E-mail : webmaster@lslnet.com