也是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的方法,希望对你有用。