【踩坑】在不同平台下编译使用 MySQL C API 的应用程序

本文讲述了在MacOS和Windows环境下使用MySQL C API进行应用程序开发的过程。在MacOS上,通过下载MySQL的压缩包并链接mysqlclient库成功编译。而在Windows上,由于官方未提供最新版的压缩包,作者通过安装MySQL Server获取所需的库文件,并解决了编译时因位数不匹配导致的问题,最终使用mingw64和libmysql库完成编译。运行程序时需确保libmysql.dll在路径中。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在不同平台下编译使用 MySQL C API 的应用程序

最近需要调 MySQL C API 写一些程序,最开始是在 UNIX(macOS) 下开发的,跟着官网的文档做,基本上没出现什么问题,编译非常顺利。

这是 C API 的说明页 -> https://dev.mysql.com/downloads/c-api/

MySQL 对 macOS 平台提供了压缩包,在这里 -> https://dev.mysql.com/downloads/mysql/

我们只需要将里面的 includelib 目录放在一个我们知道的位置(我直接放在了开发目录下),编译的时候链接 mysqlclient

gcc source.c -o out -Iinclude -Llib -lmysqlclient

在 Windows 下,MySQL 官方没有提供压缩包(有,但最高到 6.x 版本),而是安装包(msi),他会给你安装完整的 MySQL Server,以及 MySQL Client,还有一大票各种编程语言的 SDK。

你也可以使用 scoop 来仅安装一个 MySQL Client,你只需要 scoop install mysql 即可,在安装到的目录会有 includelib

对于官网提供的安装包,装好之后在 C:\Program Files\MySQL\MySQL Server 8.0 下会有 includelib 目录,虽然 installer 写的是 32 bit,但不知道为什么 lib 却是 64 bit 的。

但我尝试用他们去编译,但是怎么也搞不定,链接 mysqlclient 会给我蹦出来一大堆输出,也没什么有效信息,根据官网文档的提示,在 Windows 下可以链接 libmysql,但是会输出一些 undefined reference。
后来发现根本原因是,我的 mingw gcc 跟 mysql lib 的位数不一样。

于是装了一个 mingw64,链接 libmysql

gcc source.c -o out -Iinclude -Llib -llibmysql

然后就能跑了。
看似问题很简单,但是中间兜兜转转了两三个小时才定位问题。

最后要注意的是,运行构建出来的二进制时,应该确保运行时动态库 libmysql.dll 在环境变量中,或在二进制文件周围。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

高厉害

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值