QT MSVC 2008 编译mysq

本文详细记录了使用MSVC2010编译MySQL驱动的过程及遇到的问题与解决办法,适用于Qt4.8.1环境。

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

原文链接:http://www.cnblogs.com/rophie/archive/2012/04/14/2447309.html


经过近一天的折腾,终于搞定了MySQL驱动的编译,使用的是msvc的编译器,真是很麻烦,网上找了很多资料,都是针对mingw的(这个应该很简单,下周折腾吧,没精力了)。使用msvc来编译,对着教程都不能成功,各种各样的错误,不断的重装……今天写出来我遇到的问题及解决方法,希望遇到这些问题的朋友不用再心力交瘁了,呵呵……

我使用的是Qt 4.8.1和MSVC2010,首先下载:

1.Qt libraries 4.8.1 for Windows (VS 2010, 235 MB)

2.下载Mysql,并全部安装(我用的是5.5.22-win32),要保证安装目录里有include和lib文件夹

 

开始工作:

1.将include和lib文件夹拷出来放到没有空格的路径中,比如我的是在D盘根目录。

2.lib\libmysql.dll拷到system32文件夹里,为了防止报错

3.使用命令提示符进入qt源文件目录,比如我的:D:\Qt\4.8.1\src\plugins\sqldrivers\mysql

4.执行:qmake –o Makefile INCLUDEPATH+="D:\include" LIBS+="D:\lib\libMySQL.lib" MySQL.pro  (INCLUDEPATH是你的MySQL的include文件路径,LIBS是你lib所在目录

5.这是D:\Qt\4.8.1\src\plugins\sqldrivers\mysql目录里应该生成了响应文件,如下:

 

6.打开开始菜单中Qt源文件目录的Command Prompt

 7.执行nmake命令

 8.如果提示以下错误

 

 打开D:\Qt\4.8.1\src\sql\drivers\mysql中的qsql_mysql.h文件,修改第52行,将

#include <mysql.h>修改为mysql.h所在的目录,比如我的在D盘,修改为#include <D:\include\mysql.h>,然后保存。

9.继续nmake,继续出错

 

 将D:\lib\libmysql.lib复制到s2010的目录,如:D:\Program Files\Microsoft Visual Studio 10.0\VC\lib

10.继续执行nmake,成功了,再执行nmake release,又成功了。这时D:\Qt\4.8.1\src\plugins\sqldrivers\mysql\release和debug目录如下

 

出现我们需要的驱动啦!将下面四个文件拷到D:\Qt\4.8.1\plugins\sqldrivers里就可以了

 

虽然就这么几步简单的东西,耗费了我很长的时间,总有不可预料的错误产生,下次再来试下Mingw编译。


### 成功编译程序的关键步骤 #### 配置基础环境 为了确保QTMSVC环境下能够顺利编译程序,需先确认基础环境已正确搭建。这包括但不限于安装Visual Studio及其组件、Windows SDK等必要软件包[^2]。 #### 设置Qt Creator偏好选项 在Qt Creator内调整相关设置对于解决潜在编码问题至关重要: - **环境配置** - 导航至`编辑->首选项->环境`,这里可以设定全局字符集支持,推荐采用UTF-8作为默认编码方式以兼容更多语言文字显示需求。 - **文本编辑器参数** - 继续前往`编辑->首选项->文本编辑器`部分,同样建议指定文件保存时使用的编码格式为UTF-8无BOM形式,从而减少因不同平台间转换带来的不一致情况发生概率[^1]。 #### 处理MSVC编译日志乱码现象 当遇到使用MSVC编译过程中产生的日志存在乱码的情况时,可通过修改项目属性来修正此状况。具体操作是在项目的`.pro`文件里加入如下指令: ```qmake QMAKE_CXXFLAGS += /utf-8 ``` 上述命令强制C++编译器接受源代码中的Unicode字符串并按照UTF-8标准处理输入输出流,有效防止了由于本地化差异引发的日志记录错位或无法识别等问题出现。 #### 应对程序运行期间的日志乱码挑战 针对应用程序启动后控制台窗口内的消息呈现异常的情形,则需要进一步优化应用内部逻辑实现。一种可行方案是通过调用`setlocale()`函数动态更改当前线程的语言区域设置,在main()函数入口处添加下面这段代码片段可帮助改善这一症状: ```cpp #include <clocale> // ... int main(int argc, char *argv[]) { setlocale(LC_ALL,"chs"); // 或者尝试 zh_CN.UTF-8 等其他适合的选择 } ``` 该措施使得整个进程范围内均能正常解析并展示中文字符序列,进而解决了终端界面下的字体失真难题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值