MySQL与C++错误:mysql_init未定义引用。

7
#include <stdlib.h>
#include <mysql.h>

#include <my_global.h>


int main (int argc, char *argv[])
{

MYSQL *conn;
MYSQL_RES *res;
MYSQL_ROW row;

char *server = "127.0.0.1";
char *user = "root";
char *password = "1386";
char *database = "OurDB";

conn = mysql_init(NULL);

/* Connect to database */
if (!mysql_real_connect(conn, server,user, password, database, 0, NULL, 0))
{
    fprintf(stderr, "%s\n", mysql_error(conn));
    exit(0);
}

  return 0;
}

在 CodeBlocks 中我遇到了链接器错误。
undefined reference to mysql_init

我在链接选项中使用了mysql_config --libs,在编译器选项中使用了mysql_config --cflags。我在某个地方读到应该添加一些库文件,如libmysql.lib,但我在我的PC上找不到这个文件(我正在使用Ubuntu 11.04 64位版本)。

1
libmysql.lib是为Windows准备的。你应该寻找适用于Linux/Ubuntu的版本。 - RvdK
我应该在Ubuntu上做什么? - Behnam Safari
3个回答

5
这仅适用于Linux环境:
在“项目构建选项”>“链接器设置”选项卡中,在“其他链接器选项”下,添加-lmysqlclient
您还需要在“搜索目录” > “编译器”中添加mysql-connector-c-6.1.3-linux-glibc2.5-x86_64/include/ 您还需要在“搜索目录” > “链接器”中添加mysql-connector-c-6.1.3-linux-glibc2.5-x86_64/lib/ 对于Windows: -lmysql MySQL连接器库可以在此处找到:http://dev.mysql.com/downloads/connector/c/

尝试了多种其他解决方案后,这是唯一有效的方法。 - user124384
你应该将mysqlclient添加到“链接库”中,而不是“其他链接器选项”,这样更加便携。当切换编译器时,code::blocks会自动将“-l”更改为编译器支持的任何内容 :p - hanshenrik

3

请使用下面的命令编译您的应用程序

gcc -o test  -L/usr/lib/mysql -lmysqlclient test.c

0

设置 -> 编译器和调试器 -> 搜索目录 -> 链接器,然后添加并插入/usr/lib/mysql/


1
"设置"在哪里?有一个名为"设置"的下拉菜单。如果这就是你所指的,那么在该下拉菜单中没有"编译器和调试器"选项(至少不再有了)。我已经将"/usr/lib/mysql"添加到编译器>搜索目录>链接器>添加中,但这并没有解决问题。 - user124384

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接