将 MariaDB 与 C 连接时出错:对"mysql_init@4"的未定义引用



我正在尝试使用c程序连接到mariadb数据库。最初,它显示#include<mysql.h>作为没有这样的文件或目录。但在包含目录名之后,这个问题现在得到了解决,但它显示了另一个错误。

以下是我试图运行的代码:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// #include "C:/Program Files/MariaDB 10.11/include/mysql/my_global.h"
#include "mysql/mysql.h"

int main (int argc, char* argv[])
{
// Initialize Connection
MYSQL *conn;
if (!(conn = mysql_init(0)))
{
fprintf(stderr, "unable to initialize connection structn");
exit(1);
}
// Connect to the database
if (!mysql_real_connect(
conn,                 // Connection
"mariadb.example.net", // Host
"db_user",            // User account
"db_user_password",   // User password
"test",               // Default database
3306,                 // Port number
NULL,                 // Path to socket file
0                     // Additional options
));
{
// Report the failed-connection error & close the handle
fprintf(stderr, "Error connecting to Server: %sn", mysql_error(conn));
mysql_close(conn);
exit(1);
}
// Use the Connection
// ...
// Close the Connection
mysql_close(conn);
return 0;
}

我在输出中得到以下错误:

PS C:DevWin> gcc Db_con.c -o Db_con
C:UsershajosAppDataLocalTempccGZ2Rhz.o:Db_con.c:(.text+0x1e): undefined reference to `mysql_init@4'
C:UsershajosAppDataLocalTempccGZ2Rhz.o:Db_con.c:(.text+0xa1): undefined reference to `mysql_real_connect@32'
C:UsershajosAppDataLocalTempccGZ2Rhz.o:Db_con.c:(.text+0xaf): undefined reference to `mysql_error@4'
C:UsershajosAppDataLocalTempccGZ2Rhz.o:Db_con.c:(.text+0xd9): undefined reference to `mysql_close@4'
collect2.exe: error: ld returned 1 exit status

有人能解释一下问题是什么以及如何解决吗?

您必须链接到MariaDB连接器/C库。

来自MariaDB连接器/C文档:

将您的应用程序链接到MariaDB连接器/CWindows

对于静态链接,需要库libmariadb.lib;对于动态链接,请使用libmariab.dll。使用MSI安装程序,可以在MariaDB连接器/C安装的lib目录中找到这些库。

除非你使用实验插件remote_io(它需要curl库(,否则除了Windows系统库之外,没有其他库的依赖关系。