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

C++连接SQL Plus数据库时遇‘EBADMSG未在此作用域声明’错误求助

解决Code::Blocks中C++连接MySQL时'EBADMSG'未声明的错误

你遇到的'EBADMSG' was not declared in this scope错误,本质是系统错误码未被正确识别,下面是几种实用解决方法:

方法1:调整头文件包含顺序

Windows头文件<Windows.h>可能会干扰errno.h或MySQL头文件中错误码的定义,把<mysql.h>移到<Windows.h>之前即可,修改后的头文件部分如下:

#include <iostream>
#include <mysql.h>
#include <Windows.h>
#include <iomanip>
#include <stdlib.h>
#include <sstream>
#include <stdio.h>
#include <errno.h>

方法2:手动定义EBADMSG错误码

如果调整顺序无效,可在包含任何头文件前手动定义EBADMSG(Windows系统中该错误码固定为74):

#define EBADMSG 74
#include <iostream>
#include <mysql.h>
#include <Windows.h>
#include <iomanip>
#include <stdlib.h>
#include <sstream>
#include <stdio.h>
#include <errno.h>

方法3:检查Code::Blocks编译配置

确保项目已正确关联MySQL的库文件:

  • 打开项目设置 → 编译器设置 → 搜索目录,添加MySQL安装目录下的include文件夹路径
  • 链接器设置 → 搜索目录,添加MySQL安装目录下的lib文件夹路径
  • 链接器设置 → 其他链接器选项,添加libmysql.lib(Windows静态库)或-lmysqlclient(动态链接参数)

修改完成后重新编译,若仍提示连接失败,检查MySQL服务是否正常启动、用户名密码是否正确、目标数据库MaBD是否存在。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 15:20:11