您的位置:首页 > 编程语言 > Qt开发

VS2005 编译 Qt4.3.2 问题解决备忘

2013-03-29 13:48 435 查看

VS2005 编译 Qt4.3.2 问题解决备忘

编译:

必须通过"开始"菜单 -> "Microsoft Visual Studio 2005" -> "Visual Studio Tools", 运行命令行Visual Studio 2005命令行。再转到Qt4.3.2源码目录,配置命令参照网上相关文档configure -vcproj。

编译过程中,会问一个问题:是否接受GPL协议,选'y',经过一段时间以后,qmake被编译出来了。

接着编译代码,简单的敲入nmake即可,别人一步可以到位,可本人不行啊!其问题见下。



问题1:



解决:

下载zlib,本人下载的是123版

拷贝zlib1.dll到C:\WINDOWS\system32和D:\Program\Microsoft Visual Studio 8\VC\bin文件夹下

拷贝zdll.lib、zdll.exp、zlib.def到D:\Program\Microsoft Visual Studio 8\VC\lib文件夹下

拷贝zconf.h、zlib.h到D:\Program\Microsoft Visual Studio 8\VC\include文件夹下

设置工程属性页如下图



问题2:

编译src\plugins\imageformats时,出现以下情况:

qtiff缺少zlib.lib库,其解决办法同上。

qjpeg缺少libjpeg.lib库,因此下载GnuWin32,本人通过GetGnuWin32把全部东西都给下载下来了,并将其路径添加到windows环境变量中,不过对于libjpeg.lib这个库好像没有,不过他有jpeg.lib库,因此将其改名为libjpeg.lib。如此一来顺利编译。



问题3:

基本上Qt的全部库都编译的差不多了,现在就开始编译Qt工具了,其他Qt工具还行,没有出现什么问题,可是编译QtDesigner时确出问题了。这个问题目前还没法解决。也只能网搜学习了,还好编译一路来,所需的主要东西已经出来了。还是值得高兴一下的。本人将问题帖出来,希望有缘人能给我一些help。在此先谢谢了!



出错初步分析:

如果是连接错误,而生成obj文件又没问题,那么,问题应该出在QtDesignerd4.dll,其中这个dll文件中所包含的actioneditor.obj程序代码段,在编译过程中没有将连接错误中提到的函数编译进去,因此问题的关键是QtDesignerd4.dll出了问题。下面就应该是想办法将4给个函数编到里面去。由于QtDesignerComponents需要QtDesignerd4.lib因此QtDesignerd4.lib同样需要由QtDesigner生成。



进入Visual Studio 2005命令行,cd到D:\Gis\QGIS\qt\qt-win-opensource-src-4.3.2\tools\designer

qmake designer.pro

qmake -tp vc designer.pro

将Qt安装目录下的libQtScript.lib复制改名为QtScript4.lib

nmake

或者

修改designer.sln用notepad打开,将Microsoft Visual Studio Solution File, Format Version 10.00中的10.00改为9.00,另起一行添加# Visual Studio 2005,如此同法,修改其下所有的sln文件,即可用VS2005重新编译。

这个designer的编译把我编译的稀里糊涂的。不过最终还是稀里糊涂的把designer.exe给编译出来了。

为了让界面好看点本人修改了一下designer的main.cpp源码让其具有QCleanlooksStyle风格。

#include "qdesigner.h"

#include <QLibraryInfo>

#include <QDir>

#include <QCleanlooksStyle>

#include <stdlib.h>

int main(int argc, char *argv[])

{

Q_INIT_RESOURCE(designer);

// report Qt usage for commercial customers with a "metered license" (currently experimental)

#if QT_EDITION != QT_EDITION_OPENSOURCE

QString reporterPath = QLibraryInfo::location(QLibraryInfo::BinariesPath) + QDir::separator()

+ QLatin1String("qtusagereporter");

#if defined(Q_OS_WIN)

reporterPath += QLatin1String(".exe");

#endif

if (QFile::exists(reporterPath))

::system(qPrintable(reporterPath + QLatin1String(" designer")));

#endif

QDesigner app(argc, argv);

QDesigner::setStyle(new QCleanlooksStyle);

app.setQuitOnLastWindowClosed(false);

return app.exec();

}

效果如下,比以前的更有线条了呵,哈哈!



试编一个小程序:

源码如下,保存为main.cpp

#include <QApplication>

#include <QPushButton>

int main( int argc, char * argv [] )

{

QApplication app(argc, argv);

QPushButton hello("Hello world!");

hello.resize(100, 30);

hello.show();

return app.exec();

}

命令行:

qmake -project

qmake -t vcapp



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: