读书人

也是C操作MYSQL的有关问题:undefined

发布时间: 2012-02-26 20:19:43 作者: rapoo

也是C操作MYSQL的问题:undefined reference to '_mysql_init'等
看了一些老帖子,但还是没能搞定,总是提示:
undefined reference to '_mysql_init '
undefined reference to '_mysql_real_connection '
undefined reference to '_mysql_error '
undefined reference to '_mysql_real_query '
......
等等
我用的环境是:
WINDOWS XP SP2
cygwin
gcc3.4.4
MYSQL是windows版的5.0
用JAVA工作正常。

我编译是:
gcc -o main.exe main.c -I /usr/include/mysql -lmysqlclient

我已经把mysql下的include文件COPY到了/usr/include/mysql中
lib/opt下面的mysqlclient.lib也COPY到了/usr/lib下面。

请大家给点意见。多谢!
下面是源代码


源代码是COPY别的帖子的
#include <mysql/mysql.h>
#include <stdio.h>

int main(){
MYSQL *mysql;
MYSQL_RES *res;
MYSQL_ROW row;
char *query;
int t,r;

mysql_init(mysql);
if (!mysql_real_connect(mysql, "localhost ", "root ",
"loveyou ", "spider ",0,NULL,0))
{
printf( "Error connecting to database: %s\n ",mysql_error(mysql));
}
else printf( "Connected...\n ");

query= "select * from spider_work_unsite ";

t=mysql_real_query(mysql,query,(unsigned int) strlen(query));
if (t)
{
printf( "Error making query: %s\n ",
mysql_error(mysql));
}
else printf( "Query made...\n ");
res=mysql_use_result(mysql);
for(r=0;r <=mysql_field_count(mysql);r++){
row=mysql_fetch_row(res);
if(row <0) break;
for(t=0;t <mysql_num_fields(res);t++){
printf( "%s ",row[t]);
}
printf( "\n ");
}
mysql_close(mysql);
}


[解决办法]
找不到库的路径,或者你的include的路径不正确,请检查下你的配置的include路径是否包含你的include文件
[解决办法]
我已经把mysql下的include文件COPY到了/usr/include/mysql中
lib/opt下面的mysqlclient.lib也COPY到了/usr/lib下面。
windows目录怎么会是这个样子?盘符呢?
很明显目录设置的不对
------解决方案--------------------


要指出路进吧。?
[解决办法]
-I /usr/include/mysql 中有空格??
[解决办法]
还是路径有问题
[解决办法]
-I /usr/include mysql
-L /usr/lib/mysql
-lmysqlclient
[解决办法]
感觉是路径的问题
[解决办法]

1. 以下是研究 mysql 5.0.22 得出的结果,描述并使用标准 c++演
示了使用 MySQLC API 函数 简单操作数据库的流程;
例子程序在 VC6(VC7.1) + windows 2000 上调试通过;
例子程序在 red hat linux 9,red fc6 上调试通过

http://blog.csdn.net/hzhxxx/archive/2006/12/14/1443031.aspx
[解决办法]
用C操作MySql示例

mysql_c_exam.c
  
  #include <stdio.h>
  #include <mysql.h>
  int main(char **args)
  {
   MYSQL_RES *query_result;
   MYSQL_ROW row;
   MYSQL *db_handle, mysql;
   int query_error;
   mysql_init(&mysql);
   db_handle=mysql_real_connect(&mysql, "localhost ", "root ", "12345678 ", "crm ", 0, 0, 0);
   if(db_handle==NULL)
   {
   printf(mysql_error(&mysql));
   return 1;
   }
   query_error=mysql_query(db_handle, "select * from bargain ");
   if(query_error!=0)
   {
   printf(mysql_error(db_handle));
   return 1;
   }
   query_result=mysql_store_result(db_handle);
   while((row=mysql_fetch_row(query_result))!=NULL)
   {
   printf( "%s %s %s\n ",(row[0]?row[0]: "NULL "),(row[1] ? row[1]: "NULL "),(row[2] ? row[2]: "NULL "));
   }
   mysql_free_result(query_result);
   mysql_close(db_handle);
   return 0;
  }
  
  2)编译
  [cnscn@test mysql]$ gcc -o mysql_c_exam mysql_c_exam.c -I /usr/local/mysql/include/mysql -L /usr/local/mysql/lib/mysql -l mysqlclient -lz
  
  3)执行
  [cnscn@test mysql]$ ./mysql_c_exam
  1 060108-1901001 34342432
  2 060110-10001
  3 060118-101001 34342432222
  4 060118-1021013 3434sde
  5 060118-10210133 3434sded
  6 060118-10001 lkfgksdl2455
  7 060124-19001 dfgg555
  8 060124-11204 sdfsf
[解决办法]
http://blog.csdn.net/dragonxie1983/archive/2006/11/23/1409245.aspx

楼主看一下这个,这是我前不久用devcpp在win下连接mysql的方法,希望对你有用。

读书人网 >C语言

热点推荐