使用VS2010开发Qt程序的一点经验(转载)

转载:http://www.cnblogs.com/csuftzzk/p/VS_Qt_Experience.html

导读

相比于Qt Creator,我更喜欢用VS2010来进行开发。虽然启动时间相对较慢,但是VS下强大的快捷键和丰富的插件,以及使用多年的经验,都让我觉得在开发过程中得心应手。其中最重要的一点是,有时候Qt Creator报的错误莫名其妙。要根据提示找到错误根源显得无从下手。而VS的一般错误说明都比较人性化,即便在某些时候无从解决,也可以通过搜索引擎大致定位出错误的源头。下面是在调试网上的一些源代码的时候,积累下来的一点经验,记下来一来备忘,二来也可供后来人参考。

The system cannot find the path specified

当我从用VS2010打开从网上下载下来的源代码工程进行编译的时候,输出栏中出现了一系列如下的错误提示:

我的开发环境为:VS2010 32位旗舰版,Windows 7 64位,Qt库版本为5.2.1。第一次遇到这样的问题,还真的莫名其妙。于是上网搜了搜,发现了一些苗头。该工程原本是使用Qt 4.x进行开发的,但是本人使用的是Qt 5.2.1。因此我想应该是Qt库的版本不同而造成的。后来在Qt开发者社区中发现了一个解决方案,具体解决过程如下:

找到工程目录下面的.vcxproj文件,打开并搜索关键字:QtVersion

替换为如下内容:

这时再回到VS,会发现如下提示:

点击重新加载之后,如果直接开始编译工程会得到如下的错误提示:

很显然,我们需要配置下该工程的Qt库版本。因为我们在.vcxproj文件中改动了工程使用的Qt库版本,于是这里需要在Qt-VS-Addon插件中进行配置,选择Qt Project Settings弹出如下对话框,选择当前可用的Qt库版本(我的版本名称为msvc2010),然后如右侧图所示勾选必须的模块:

点击OK,然后上述错误就可以被消除了。对于基于其他Qt版本的工程,也可以如上进行移植。移植过程中会需要修改头文件,毕竟Qt 4.x和Qt 5.x相比差异性较大,这也是我在阅读人家源代码的时候最大的烦恼。往往改着改着就不想改了,因为牵涉的版本问题(包括Qt和VS,甚至第三方库)太多太折磨人了。

Qt 4.x port to Qt 5.x

上面说过,如果要移植基于Qt 4.x的工程到Qt 5.x,要做的事情还真比较多。这一节就讲讲Qt库的lib文件。以上例说明,当上述错误修改好后,编译工作并不能顺利完成,在我的机器上报出来如下的错误:

前面编译工作都没报错,显然是连接阶段出错了。看上面这名字,似乎是QtCored.lib这个文件的过度版本无法找到。于是,执行操作:“点击项目名称->右键选择项目属性->配置属性->链接器->输入->附加依赖项”,可以看到:

在Qt的安装目录下(如:C:\Qt\Qt5.2.1\5.2.1\msvc2010_opengl\lib),我并没找到以上这些lib文件,于是尝试用上述目录中对应的lib文件进行替换:

重新编译工程,此时编译过程顺利结束,生成了期待中的可执行程序。这仅仅是lib文件的设置,源代码的修改其实是另一大难题。尤其是QtGui在Qt 5.x中已经消失,因此需要大面积修改文件内容。

切换工程使用的Qt库

当机器中同时安装了多个版本的Qt库的时候,在VS也可以自如的指定使用那个版本进行编译。当然,仅仅限于大版本相同的情况下,因为这时需要修改源码的地方较小,甚至不需要修改就可以完成编译工作。如果大版本不同的话,修改源码是免不了的一件事。

如何添加不同的Qt库版本到VS中来呢?这个工作就交由qt-vs-addin来完成吧。 在菜单栏中选中Qt options,点击Add按钮并选择好Qt库的安装路径即可,版本名可自定义。在Qt Default Settings页面中,还可以指定一些编译时的默认设置。

值得注意的是,在VS中首次建立好Qt工程之后,如果后续又添加了不同Qt库版本,并尝试用新的Qt库来编译工程,那么一定要将新的Qt库的名称保持与建立工程时选择的Qt库名称保持一致,否则将会出现无法理解的错误,或许摸索一整天都不会有结果。当然,或许修改.vcxproj文件也许有用。

在VS的Solution Explorer视图中建立文件夹

在VS中如何直接新建文件夹,并且保持和文件系统同步呢?以前的做法是,先在工程目录下建立一个新的文件夹,然后到VS工程视图中引入进来。虽然可以用,未免显得太过麻烦。如下是一个经过实践的办法:

在Solution Explorer视图中点击工程名称,可以发现上面有个小图标出现了(提示信息为:显示所有文件),而点击解决方案名称的时候,这个图标又消失了。点击一下这个图标,顿时可以发现当前工程目录在磁盘上的所有文件都出现了,包括编译过程中产生的各种中间文件。显然,这就是我们要的!建立文件夹的步骤如下:

选择好文件夹的名称,打开工程所在目录,对应的文件夹赫然在目!如下是我用文件夹组织工程的前后状况:

显然清爽了不少。源代码文件在逻辑上进行了划分,对于清晰的理解整个工程的模块、架构都有莫大的帮助。对于后来的开发者和维护人员都是一种灵魂的解脱...

参考

1. http://qt-project.org/forums/viewthread/24277

时间: 2024-08-06 07:58:12

使用VS2010开发Qt程序的一点经验(转载)的相关文章

使用VS2010开发Qt程序的4点经验(QT4到QT5的升级,更改sln文件,切换工程使用的Qt库,在VS的Solution Explorer视图中建立文件夹)

导读 相比于Qt Creator,我更喜欢用VS2010来进行开发.虽然启动时间相对较慢,但是VS下强大的快捷键和丰富的插件,以及使用多年的经验,都让我觉得在开发过程中得心应手.其中最重要的一点是,有时候Qt Creator报的错误莫名其妙.要根据提示找到错误根源显得无从下手.而VS的一般错误说明都比较人性化,即便在某些时候无从解决,也可以通过搜索引擎大致定位出错误的源头.下面是在调试网上的一些源代码的时候,积累下来的一点经验,记下来一来备忘,二来也可供后来人参考. The system can

使用Visual Studio 2015开发Qt程序

0.开发环境及工具 操作系统:Windows 7 x64 编译器:Visual Studio 2015 社区版 Qt版本:5.6.0 编程助手:Visual Assist X 2074. 1.安装 需要依次安装以下工具:vs2015.Qt 5.6.0 for Windows 32-bit (VS 2015).Perl. Qt安装路径:D:\Qt\Qt5.6.0_x86.安装完毕后添加如下路径到系统环境中:D:\Qt\Qt5.6.0_x86\5.6\msvc2015\bin. Perl安装路径:C

VS2010编译Qt程序失败------error LNK1123: 转换到 COFF 期间失败:

error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏使用VS2010编译VC++项目的时候可能会出这个问题. 据说升级到SP1后可能问题解决,但是下载量太大,目前没有得到证实. 网上大多的方法都是说在“清单工具”中将嵌入清单改成“否”,但是这个不一定100%解决问题. 我总结了下 http://www.verydemo.com/demo_c278_i5203.html http://davidrobot.com/2014/06/qt5_vs2010_lnk1123_erro

VS2010生成Qt程序图标修改方法

转自:http://blog.csdn.net/simeone18/article/details/7344547 1.准备ico文件,nuistcard.ico 2.在nuistcard工程目录,建立一个nuistcard.rc文件,内容如下:(nuistcard.ico应该与nuistcard.rc同一个文件中) IDI_ICON1 ICON DISCARDABLE "nuistcard.ico" 3.修改nuistcard.vcxproj文件,在 <Project Defa

使用Unity开发项目的一点经验(转载)

我们主要使用3dsmax进行制作,输出FBX的类型导入unity3d中.默认情况下,3dsmax可以和U3d软件直接融合,自动转换为FBX物体.注意事项如下:1.面数控制在MAX软件中制作单一Game Object物体的面数不能超过65000个三角形,即32500个多边形Poly,如果超过这个数量的物体不会显示出来,这就需要我们合理分布多边形和模型数量.打开MAX场景,选择File/Properties/Summary Info可以打开文件属性记录.其中Faces可以看到每个物体的实际数量,个体

亲测VS2010纯静态编译QT4.8.0,实现VS2010编译调试Qt程序,QtCreator静态发布程序(图文并茂,非常详细)

下载源代码,注意一定是源码压缩包如qt-everywhere-opensource-src-4.8.0.zip,不是Qt发布的已编译的不同版本的标准库如qt-win-opensource-4.8.0-vs2010.exe,这些版本都只是动态编译的,不是我们所需要的.只有用源码包才能做真正的纯静态编译,如果用Qt官网已编译的标准库.exe文件进行编译,有可能出现各种错误,而且编译后的文件巨大,我当时就在这里绕了很大的弯子,请童鞋们注意啦!!可能有些老鸟会笑话,但我本着最严肃的态度告诉菜鸟们,上网查

VS2010 win7 QT4.8.0,实现VS2010编译调试Qt程序,QtCreator静态发布程序

https://www.cnblogs.com/rainbowzc/p/4689009.html 下载源代码,注意一定是源码压缩包如qt-everywhere-opensource-src-4.8.0.zip, 不是Qt发布的已编译的不同版本的标准库如qt-win-opensource-4.8.0-vs2010.exe,这些版本都只是动态编译的,不是我们 所需要的.只有用源码包才能做真正的纯静态编译,如果用Qt官网已编译的标准库.exe文件进行编译,有可能出现各种错误,而且编译后的文件巨大,我当

VA对于开发QT是神器

我怎么就忘了,VA也可以适用于VS下开发QT程序.其中QT的头文件自己增加,主要是: C:\Qt\4.8.6_2008\include 但还有一些特殊类不认识,所以还得继续增加: C:\Qt\4.8.6_2008\src\network\access ------------------------------------------------ 对于VA不认识中文注释的问题,可以在它的Underlines选项里取消拼写检查即可

树莓派入门教程——使用Qt开发界面程序

前言        Qt是一个1991年由奇趣科技开发的跨平台C++图形用户界面应用程序开发框架.它既可以开发GUI程序,也可用于开发非GUI程序,比如控制台工具和服务器.Qt是面向对象的框架,使用特殊的代码生成扩展(称为元对象编译器(Meta Object Compiler, moc))以及一些宏,易于扩展,允许组件编程.2008年,奇趣科技被诺基亚公司收购,QT也因此成为诺基亚旗下的编程语言工具.2012年,Qt被Digia收购.2014年4月,跨平台集成开发环境Qt Creator 3.1