You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用MariaDB Connector/C遇链接问题及编译报错求助

MariaDB Connector/C开发问题排查

一、bin文件夹为空的原因及解决

  • 原因:官方MSI安装的Connector/C默认仅包含开发组件(头文件、静态/动态库),bin目录本就不会附带可执行工具(如mysql命令行客户端)——它是给C程序提供开发链接库的工具包,而非客户端工具集合。
  • 解决办法:
    • 仅做C程序开发的话,bin目录空不影响开发,只要include和lib目录有文件即可;
    • 如果需要mysql等命令行工具,重新运行MSI安装包并勾选**客户端工具(Client Tools)**组件,或者直接安装完整的MariaDB Server。

二、编译错误原因及解决

你遇到的file not recognized: File format not recognized错误,结合代码细节,按以下步骤修正:

1. 匹配编译器与Connector/C的位数

错误核心是位数不兼容:你使用的是32位gcc(如普通MinGW),但安装了64位Connector/C,32位编译器无法识别64位的libmariadb.dll。

  • 要么卸载64位Connector/C,安装对应32位版本;
  • 要么更换为64位gcc(如MinGW-w64),与64位Connector/C匹配。

2. 修正代码中的头文件引用

代码里写了头文件绝对路径,容易和编译时指定的-I路径冲突,改成标准相对引用:

#include <stdio.h>
#include <stdlib.h>
#include <mysql/mysql.h>

3. 修复代码逻辑错误

当mysql_init(NULL)返回NULL时,mysql_error(con)会因空指针报错,调整为:

if (con == NULL) 
{
    fprintf(stderr, "%s\n", mysql_error(NULL));
    exit(1);
}

4. 正确编译与运行

  • 使用匹配位数的gcc执行编译命令(以64位环境为例):
gcc -o Dbcon.exe Dbcon.c -I"C:\Program Files\MariaDB\MariaDB Connector C 64-bit\include" -L"C:\Program Files\MariaDB\MariaDB Connector C 64-bit\lib" -lmariadb
  • 编译完成后,将Connector/C的lib目录下的libmariadb.dll复制到Dbcon.exe所在目录,或者把该lib目录添加到系统环境变量PATH中,否则运行程序会提示找不到依赖DLL。

内容的提问来源于stack exchange,提问作者Harshal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 17:25:29