【问题标题】:Mysql with C++ error: undefined reference to mysql_init带有 C++ 错误的 Mysql:未定义对 mysql_init 的引用
【发布时间】:2012-03-10 10:55:01
【问题描述】:
#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;
}

我在代码块中遇到链接器错误:

undefined reference to mysql_init

我在链接器选项中使用了mysql_config --libs,在编译器选项中使用了mysql_config --cflags

我在某处读到我应该添加一些库,如 libmysql.lib,但我在我的电脑上找不到这个文件(我使用的是 Ubuntu 11.04 64 位)。

【问题讨论】:

  • libmysql.lib 适用于 Windows。您应该寻找 linux/ubuntu 类型。
  • 我应该用 Ubuntu 做什么?

标签: c++ mysql codeblocks


【解决方案1】:

这仅适用于 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/“搜索目录” > “链接器”

对于窗户:

-lmysql

MySQL 连接器库可以在这里找到: http://dev.mysql.com/downloads/connector/c/

【讨论】:

  • 在尝试了多种其他解决方案之后,这是唯一对我有用的方法。
  • 你应该将 mysqlclient 添加到link libraries,而不是other linker options,它只是更便携。 code::blocks 将在切换编译器时自动将-l 更改为编译器支持的任何内容:p
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

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

    【讨论】:

    • “设置”在哪里?有一个名为“设置”的下拉菜单。如果这就是您所指的,那么该下拉菜单中没有“编译器和调试器”选项(至少如此)。我将“/usr/lib/mysql”添加到编译器 > 搜索目录 > 链接器 > 添加,但这并没有解决问题。
    猜你喜欢
    • 2012-06-13
    • 1970-01-01
    • 2022-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多