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
相关产品推荐
相关产品推荐

