MySQL and C : undefined reference to `_mysql_init@4'|
I'm trying to write a simple script for C to get values from a MySQL database, but it's throwing this error 'undefined refer开发者_运维百科ence to `_mysql_init@4''
Don't know if I'm not linking to something I should be? My C knowledge is limited...
I'm using Code Blocks on Windows, here's my code:
#include <winsock.h>
#include <C:\mysql\include\mysql.h>
#include <stdio.h>
#include <string.h>
int main()
{
MYSQL mysql;
MYSQL_RES *res;
MYSQL_ROW row;
char query[80];
mysql_init(&mysql);
mysql_real_connect(&mysql,"localhost","user","pass","db",0,NULL,0);
sprintf(query,"SELECT src,dst FROM ipaudit");
mysql_real_query(&mysql,query,(unsigned int)strlen(query));
res = mysql_use_result(&mysql);
while(row = mysql_fetch_row(res))
printf("%s %sn",row[0],row[1]);
mysql_free_result(res);
return 0;
}
That's a linker error, indicating that the linker can't find the function mysql_init
.
Make sure you are linking to libmysql.lib
or mysqlclient.lib
. You also need to include <my_global.h>
when building on Windows (see that same page in the MySQL Manual).
undefined reference
refers to a problem with the linker. The function mysql_init()
is not part of your code and is already compiled in a library. You have to tell the linker to include the code for that function by specifying the library where said code is.
I don't know how to specify libraries in Code Blocks, sorry
Edit
A quick Google search for how to specify libraries in Code Blocks returned a interesting result :)
use 32bit connector: http://www.mysql.com/downloads/connector/c/
and dont forget to #include <windows.h>
before #include <mysql.h>
精彩评论