VS2010+OpenCV2.4.3+Qt4.8.4 结合配置
一直想给OpenCV装个壳,可惜不会使MFC~(>_<)~,听说Qt比较好使,早就想尝试Qt了,最近终于付诸行动,但是VS2010+OpenCV2.4.3+Qt4.8.4 组合配置真是历尽坎坷啊,现在把我的一些经验教训记载如下,希望给大家提供一些参考和帮助。(主要讲解Qt与VS2010的配置,OpenCV与VS2010结合配置比较简单,在此就不细讲了。)
1.下载:
在http://qt-project.org/downloads下载两个文件:
-
Qt SDK:Qt libraries 4.8.4 for Windows (VS 2010, 234 MB)
-
VS2010开发插件:Visual Studio Add-in 1.1.11 for Qt4
2.安装与修改:
安装Qt SDK,具体目录自己定,连续点下一步就行,但是文件目录最好别有空格,Qt貌似特别较弱,对空格和中文路径都不太支持。
编译就比较麻烦,因为Qt的library是基于minGW的,要在VS2010下使用就需要重新编译。
首先要修改Qt SDK的几处错误,不然会出让人无限抓狂的错误:
-
删除源码包中bin目录下的syncqt和syncqt.dat文件,如你不放心可将其改名或剪切到别的位置。如不修改将发生Perl not found in environment - cannot run syncqt 错误。
-
修改\mkspecs\win32-msvc2010下的qmake.conf文件,将其中的QMAKE_CFLAGS=-nologo -Zm200 -Zc:wchar_t-改成QMAKE_CFLAGS=-nologo -Zm200 -Zc:wchar_t
注意末尾的”-“号区别。如不修改将来如有项目使用wchar_t,qt却编译成wchar_t-,编译会导致连接错误,提示找不到Qwstring;(这部分很多人都说需要将QMAKE_CFLAGS_RELEASE,QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO,QMAKE_CFLAGS_DEBUG这3处后面的MD,MDd对应改成MT,MTD,以实现在没有VC库的电脑也能运行Qt程序,但是我没有改,改的话我的编译反而出问题。)
-
修改src\3rdparty\webkit\Source\WebCore\platform下的DefaultLocalizationStrategy.cpp,定位到327行,将本行替换成return WEB_UI_STRING("Look Up \"<selection>\"", "Look Up context menu item with selected word").replace("<selection>", truncatedStringForLookupMenuItem(selectedString))。
3.编译(漫长的等待)
开始->Microsoft Visual Studio 2010->Visual Studio Tools->Visual Studio命令提示(2010),打开的窗口如下:
上图是VS2010自动帮我配置好环境变量,已正常进入VS2010的VC目录上一段是题外话,如果你的VS已经自动帮你配置好环境变量了,如上面截图所示,则输入命令进入到源码包的目录下。
进入我的已解压的源码包目录下,我已重命名为qt4.8.4了。
运行命令configure -platform win32-msvc2010,o(选择opensource模式)回车,Y(同意license)回车
接着就会自动配置Qt的编译环境,等配置结束(大概40分钟)
运行nmake,回车,Qt就会开始漫长的编译过程,这段时间非常长,需要4个小时以上,大家可以在晚上睡觉的时候进行编译。
只要不出错(warning无所谓),那就恭喜你,你已经完成了大部分的工作。(这一步劳资花了3天才搞定,累死哥了~)
4.安装Qt_VS2010插件
同安装Qt SDK一样,一路上回车即可,安装后在VS2010上新增一菜单Qt,如图所示
配置VS2010的Qt开发环境(VS2010最好是英文版本,Qt对VS2010中文版本可能支持的不好)
等Qt插件安装好后就可以配置VS2010的开发环境了,进入VS2010,选择Qt菜单,Qt Option,进入下图界面
点击Add,添加Qt的安装目录,并取名字。我取了qt4.8.4的名字。。选择ok就哦了。。
5.新建或者导入Qt项目
可以通过在VS2010新建一个Qt项目
再次强调:该工程文件的目录不可以有中文。不然会报错。。(最好是英文路径,而且不要有空格)。之后运行就哦了。。
我们在此测试一个最简单的Hello World!
在main函数中输入下面的代码:
#include <QtGui/QApplication> #include <QLabel> int main(int argc, char *argv[]) { QApplication a(argc, argv); QLabel *label=new QLabel("<h2><i>Hello </i>""<font color=red>world!</font></h2>");//create a label with the content "Hello world!" label->show(); return a.exec(); }
coference:
http://www.cnblogs.com/elect-fans/archive/2012/03/29/2422816.html
http://www.cnblogs.com/tornadomeet/archive/2012/04/22/2465506.html
http://blog.****.net/xhmqz/article/details/8257456
- 1楼feixiaku5小时前
- 您好,按照步骤都成功,在演示例子的时候有点问题。如下:n应用程序在下release编译后可以正常执行,可是编译到debug下 打开 .exe文件时,就出错:n无法定位程序输入点*于动态链接库QtCore4.dll上,在网上搜了更种方法都没有成功,环境变量也都添加了。n其他人都是在debug下有问题,我这个正好相反,很奇葩!n求助
- Re: sangni0072小时前
- 回复feixiakun我也是新手~ 不懂啊~