• 8350阅读
  • 9回复

VS2010+Qt_4.8.3环境搭建 [复制链接]

上一主题 下一主题
离线小鸟一只
 
只看楼主 正序阅读 楼主  发表于: 2012-12-18
各位亲们,本人最近刚接触Qt,需要搭建VS2010+Qt_4.8.3,于是去官网下载了源码qt-everywhere-opensource-src-4.8.3.zip、已经编译好的动态库qt-win-opensource-4.8.3-vs2010.exe以及Qt对VS2010的插件qt-vs-addin-1.1.11-opensource.exe,按照下面步骤进行操作,
1、安装Qt编译好的动态库qt-win-opensource-4.8.3-vs2010.exe
2、安装Qt对VS2010的插件qt-vs-addin-1.1.11-opensource.exe
3、打开VS2010进行Qt Opition进行配置
4、使用VS2010新建一个项目,编写代码,然后配置VC++ Directories,在link中添加Qt中的lib库
5、编译,link成功,但是执行的时候会出现“***.dll找不到,程序无法执行的问题”。这是因为qt-win-opensource-4.8.3-vs2010.exe是Qt自己编译好的动态库,执行程序的时候必须将相应的dll一起拷贝到.exe文件下,.exe文件才能执行。也可以在自己的电脑将qt-win-opensource-4.8.3-vs2010.exe安装目录中的bin目录设置为环境变量。但是这样的话,发布程序的时候还是要将相应的库一起打包的,这样不是很方便,所以本人就在网上查找了关于Qt4.8.3静态编译的方法,然后安装其方法进行一步一步操作,
1、解压qt-everywhere-opensource-src-4.8.3.zip
2、修改mkspecs\win32-msvc2010目录中的qmake.conf文件,有以下修改
     将QMAKE_CFLAGS = -nologo -Zm200 -Zc:wchar_t-修改成QMAKE_CFLAGS = -nologo -Zm200 -Zc:wchar_t
     将文件中的MD都替换成MT,MDd替换成MTd
3、删除bin目录下的两个S打头的文件一个是批处理(.bat文件),记住不能删掉setcpaths.bat文件
4、修改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));
5、进入VS2010的命令行Visual Studio Command Prompt(2010),然后进入到qt-everywhere-opensource-src-4.8.3.zip的解压目录
6、使用Configure进行配置
7、使用nmake进行编译,编译成功

8、打开VS2010进行Qt Opition进行配置
9、使用VS2010新建一个项目,编写代码,然后配置VC++ Directories,在link中添加Qt中的lib库
10、进行编译,编译没问题,但是Link时有问题,有如下问题,
QtCoreD.lib(qeventdispatcher_win.obj) : error LNK2019: unresolved external symbol _WSAAsyncSelect@16 referenced in function "public: void __thiscall QEventDispatcherWin32Private::doWsaAsyncSelect(int)" (?doWsaAsyncSelect@QEventDispatcherWin32Private@@QAEXH@Z)

向各位求解,不知是什么问题。
谢谢!
离线小鸟一只
只看该作者 9楼 发表于: 2012-12-29
回 8楼(tudousi) 的帖子
仁兄有何高见吗?
离线tudousi
只看该作者 8楼 发表于: 2012-12-28
离线小鸟一只
只看该作者 7楼 发表于: 2012-12-19
还是使用Qt自己编译好的动态库吧,看了一下使用静态库框框条条还是挺多的,也没有找到为什么会出现那样的错误。
离线小鸟一只
只看该作者 6楼 发表于: 2012-12-18
回 5楼(0xffffh) 的帖子
debug是有编的,下面是我编译的配置命令,
configure -debug-and-release -fast -static -platform win32-msvc2010  -script -scripttools -qt-zlib -qt-libpng -qt-libmng -qt-libtiff -qt-libjpeg -qt-sql-sqlite -plugin-sql-sqlite -qt-style-windows -qt-style-windowsxp -qt-style-windowsvista -qt-style-plastique -qt-style-cleanlooks -qt-style-motif -qt-style-cde -nomake demos -nomake examples -nomake docs –mp
lib下面是有QtCored的,要不然是会报找不到QtCored的。至于LGPL对于静态链接是有要求我就不知道了,我去查查看,谢谢!

离线0xffffh

只看该作者 5楼 发表于: 2012-12-18
编译的时候有没有编debug,可以再bin和lib目录下看有没有QtCored等等,LGPL对于静态链接是有要求的你可以自己查。
离线小鸟一只
只看该作者 4楼 发表于: 2012-12-18
回 3楼(0xffffh) 的帖子
现在不是有遵守LGPL协议的静态编译吗?静态编译后不就可以使用静态链接吗?我自己用使用VS2010新建了一个Qt4工程,编译可以通过,发生上面的问题的是我使用VS2010建立一个Visual C++的项目。所以我现在是在想是不是因为我在静态编译的时候,配置有问题还是什么原因引起的。看报的错,我的VS2010+Qt的环境没有搭错,只是QtCored.lib中的函数没有链接成功
离线0xffffh

只看该作者 3楼 发表于: 2012-12-18
这样没有问题啊,除非你买了License,否则你是不能静态链接的。Qt的dll压缩一下会变小不少的。
离线小鸟一只
只看该作者 2楼 发表于: 2012-12-18
是的,本来应该这样的,可是是由于因为项目需要,使用Qt发布的二进制的包的话,每次发布程序都要添加相应的dll,这样不是很方便
离线0xffffh

只看该作者 1楼 发表于: 2012-12-18
学Qt还是不要用VS,QtCreator已经不错了,虽然Windows下调试的效率不是很好,但是Linux下还是不错的。既然是刚接触就不要急于自己编译,先下个二进制的包,熟悉一下,了解一下大概功能。
快速回复
限100 字节
 
上一个 下一个