win10下使用vs2010编译64位qt-4.8.7
首先下载源码版
qt-4.8.7
第二步安装
perl
,建议安装ActivePerl
,可以下载5以上的版本第三步配置环境变量
1
2
3QTDIR=path\qt-everywhere-opensource-src-4.8.7
QMAKESPEC=win32-msvc2010
将path\qt-everywhere-opensource-src-4.8.7\bin 添加到PATH第四步使用vs2010自带的x64命令行工具进行configure
1
2
3
4
5
6
7
8#先找到
Microsoft Visual Studio 2010 -> Visual Studio Tools -> Visual Studio X64 Command Prompt
#切换到源码目录
cd path\qt-everywhere-opensource-src-4.8.7
#然后执行
configure -debug-and-release -opensource -platform win32-msvc2010第五步用vs2010打开
project.sln
,然后编译整个项目编译时会遇到一些错误参考win10下vs2010编译64位qt4.8.7_小杨的专栏-CSDN博客
重要的是以下错误处理
根据vs2010红线提示功能,你会发现TEST_SOURCE_DIR提示有问题。鼠标放在所有变量,会提示一个路径。实际上这个路径就是qwebpage/qwebview/qwebframe的源码路径。TEST_SOURCE_DIR宏在这里无法识别,所以,只要在每一个出问题源文件人工定义该宏值,就可以handle这个bug。我电脑的该路径为E:\qt4\src\3rdparty\webkit\Source\WebKit\qt\tests\
在对应cpp文件定义下面加入宏定义为:
#define TESTS_SOURCE_DIR “E:/qt4/src/3rdparty/webkit/Source/WebKit/qt/tests/“
问题三:
错误 234 error LNK2019: 无法解析的外部符号 HBeginPaint,该符号在函数 “private: static struct HDC_ * cdecl WebCore::PluginView::hookedBeginPaint(struct HWND *,struct tagPAINTSTRUCT *)” (?hookedBeginPaint@PluginView@WebCore@@CAPEAUHDC__@@PEAUHWND__@@PEAUtagPAINTSTRUCT@@@Z) 中被引用 E:\Libraries\qt4\src\3rdparty\webkit\Source\WebKit\qt\webcore.lib(PluginViewWin.obj) QtWebKit
错误 235 error LNK2019: 无法解析的外部符号 HEndPaint,该符号在函数 “private: static int cdecl WebCore::PluginView::hookedEndPaint(struct HWND *,struct tagPAINTSTRUCT const *)” (?hookedEndPaint@PluginView@WebCore@@CAHPEAUHWND_@@PEBUtagPAINTSTRUCT@@@Z) 中被引用 E:\Libraries\qt4\src\3rdparty\webkit\Source\WebKit\qt\webcore.lib(PluginViewWin.obj) QtWebKit
1.选中webcore这个工程,右键—》添加—-》现有项,将PaintHooks.asm加入到工程当中,在Source Files分类中,可以找到这个文件。
2.选中webcore这个工程,右键—》生成自定义—-》勾选“masm(.targets .props)”选项—》确定
3.在Source Files分类中,可以找到PaintHooks.asm,选中,右键—》属性–》在“常规”选项卡中,对“项类型”选择“Microsoft Macro assembler”–》确定。4.选中PaintHooks.asm,右键—-》编译,
4.在.\src\3rdparty\webkit\Source\WebCore\tmp\obj\release_shared目录下,就会生成PaintHooks.obj二进制文件,这个文件就可以被c++代码直接调用,具体调用回到前面所述c++调用汇编函数代码。
5.生成工程。