Windows 10下CodeBlocks连接MySQL的链接器问题求助
首先先提个代码里的小问题——你写的object sql::Statement *stmt;这行有语法错误,多余的object要删掉,改成sql::Statement *stmt;,不然编译第一步就过不去。
接下来重点解决链接器错误,这类问题基本都是CodeBlocks没正确找到Connector的库文件或者头文件导致的,按下面的步骤逐一排查:
1. 确认Connector的安装路径
先确保你已经正确安装了MySQL Connector C++ 1.1.9,记好它的安装目录,比如默认路径可能是C:\Program Files\MySQL\MySQL Connector C++ 1.1.9。
2. 配置编译器和链接器的搜索路径
打开你的CodeBlocks项目,按以下操作:
- 点击顶部菜单栏的
Project→Build options... - 在弹出的窗口左侧选中你的项目,切换到
Search directories标签:- 选
Compiler子标签,点击Add,把Connector的include目录加进去,比如C:\Program Files\MySQL\MySQL Connector C++ 1.1.9\include - 再切到
Linker子标签,点击Add,添加Connector的lib/opt目录(1.1.9版本的库文件都在这个子目录里),比如C:\Program Files\MySQL\MySQL Connector C++ 1.1.9\lib\opt
- 选
3. 添加需要链接的库文件
还是在Build options...窗口,切换到Linker settings标签:
- 你可以直接在
Other linker options里输入-lmysqlcppconn,或者点击Add按钮,找到mysqlcppconn.lib文件(就在刚才的lib/opt目录下)添加进去。
4. 检查位数是否匹配
CodeBlocks默认带的MinGW编译器是32位的,如果你装的是64位的Connector,肯定会出现链接错误。解决办法二选一:
- 卸载64位Connector,重新安装32位版本
- 给CodeBlocks配置64位的MinGW编译器,保证编译器和Connector的位数完全一致
5. 复制动态链接库到可执行目录
Connector的动态链接库是mysqlcppconn.dll,你需要把它复制到项目生成的exe文件所在的目录(比如项目的bin\Debug或bin\Release文件夹),或者放到C:\Windows\System32(64位系统可以放C:\Windows\SysWOW64),这样程序运行时才能找到这个依赖库。
6. 确认构建模式对应
如果Connector只有Release版本的库(1.1.9版本确实大多只有Release库),那你的项目要切换到Release模式构建,别用Debug模式,不然也会出现链接问题。
按照上面的步骤一步步检查调整,应该就能解决链接器错误了。
内容的提问来源于stack exchange,提问作者user7972779

