使用MariaDB Connector/C遇链接问题及编译报错求助
MariaDB Connector/C开发问题排查
一、bin文件夹为空的原因及解决
- 原因:官方MSI安装的Connector/C默认仅包含开发组件(头文件、静态/动态库),bin目录本就不会附带可执行工具(如mysql命令行客户端)——它是给C程序提供开发链接库的工具包,而非客户端工具集合。
- 解决办法:
- 仅做C程序开发的话,bin目录空不影响开发,只要
include和lib目录有文件即可; - 如果需要mysql等命令行工具,重新运行MSI安装包并勾选**客户端工具(Client Tools)**组件,或者直接安装完整的MariaDB Server。
- 仅做C程序开发的话,bin目录空不影响开发,只要
二、编译错误原因及解决
你遇到的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
相关产品推荐
相关产品推荐

