编译环境:
(1) win7/64
(2) VS2010
(3) qt-everywhere-opensource-src-4.8.6.zip
2.1 开始 -> 所有程序 ->Micorsoft Visual Studio 2010->visual studio tools-> Visual Studio x64 win64 command prompt (2010)
2.2 用cd命令 进入D:\QtLib_4.8.6\qt-everywhere-opensource-src-4.8.6文件夹
2.3 设置如下环境变量:
set QTDIR=D:\QtLib_4.8.6\qt-everywhere-opensource-src-4.8.6
set QMAKESPEC=win32-msvc2010
2.4 修改一些错误:
(1)打开这个文件:
按Ctrl+G定位 到 327 行, 改为:
return WEB_UI_STRING("Look Up \"
注意第一个括号内look up 后的双引号。
(2)--- mkspecs/win32-msvc2010/qmake.conf
+++ mkspecs/win32-msvc2010/qmake.conf
QMAKE_LFLAGS_RELEASE_WITH_DEBUGINFO = /DEBUG /OPT:REF
QMAKE_LFLAGS_DEBUG = /DEBUG
修改为
QMAKE_LFLAGS_RELEASE_WITH_DEBUGINFO = /DEBUG /OPT:REF /INCREMENTAL:NO2.5 配置编译QT的选项 (可利用configure -hlep命令查看各选项意义,自己选择编译模块)
configure -opensource -nomake demos -nomake examples -platform win32-msvc2010 -webkit
提示:Do you accept the terms of the lisence ? 输入y, 则开始编译qmake工具
2.6 Configure完成后,会在D:\QtLib_4.8.6\qt-everywhere-opensource-src-4.8.6下生成Project.sln,使用VS2010打开后进行release/debug x64 编译
错误 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
通过Find Solution,你会找到hookedBeginPaint的定义在webcore--->PluginViewWin.cpp中。出问题代码如下:
如上图,打钩地方_HBeginPaint函数是一个无法解析外部符号,其实本质原因无非就是_HBeginPaint定义代码,没有加载进入工程当中。这是为什么呢???
从本源文件开头,有_HBeginPaint的定义,你会发现这是一种c++调用汇编代码方式。
#if OS(WINDOWS) && CPU(X86_64) && COMPILER(MSVC)
extern "C" HDC __stdcall _HBeginPaint(HWND hWnd, LPPAINTSTRUCT lpPaint);
extern "C" BOOL __stdcall _HEndPaint(HWND hWnd, const PAINTSTRUCT* lpPaint);
#endif
验证想法的是,在PluginViewWin.cpp同目录下,有一个汇编文件PaintHooks.asm,使用普通记事本打开,你会发现,里面就是定义了
_
HBeginPaint函数。
++代码直接调用,具体调用回到前面所述c++调用汇编函数代码。
tst _ qwebpage/tst _ qwebview/tst _ qwebframe:
#include h>
#include h>
#include h>
#define TESTS_SOURCE_DIR "E:/Libraries/qt4/src/3rdparty/webkit/Source/WebKit/qt/tests/"
重新编译,就可以解决这个问题了。
插件也是什么都不用改,按照默认配置进行安装。 QT Addin 1.11安装完成之后,就可以在VS里面进行QT项目的开发了。
然后介绍怎么配置VS2010中的QT目录。
打开VS2010,发现菜单栏多了QT的菜单。
然后点击QT菜单项,选择QT Options选项。
然后按照下图中的步骤,点击Add, 然后选择QT的安装目录,最后点击确定就可以了。
使用qt建立工程,报错
1:注意:打开main.cpp文件,否则 “Qt Project Settings”是灰色,不可选;
2:选择编译机器上的版本: