VS2010编译X64位Qt4.8.6

编译环境:

(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)打开这个文件:\src\3rdparty\webkit\Source\WebCore\platform\DefaultLocalizationStrategy.cpp
       按Ctrl+G定位 到 327 行, 改为:
    return WEB_UI_STRING("Look Up \"\"", "Look Up context menu item with selected word").replace("", truncatedStringForLookupMenuItem(selectedString));

       注意第一个括号内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:NO
      QMAKE_LFLAGS_DEBUG      = /DEBUG /INCREMENTAL:NO

   2.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中。出问题代码如下:

VS2010编译X64位Qt4.8.6_第1张图片

如上图,打钩地方_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函数。
VS2010编译X64位Qt4.8.6_第2张图片

PaintHooks.asm里面内容为:

VS2010编译X64位Qt4.8.6_第3张图片

到这里我们就可以下一个结论了,对于vs2010为什么会报无法解析外部符号 _ HBeginPaint。 原因,就是vs2010采用c++编译器,是无法编译汇编语言的。所以需要设置汇编编译器,单独编译PaintHooks.asm文件,成为二进制文件PaintHooks.obj。


就这问题,笔者重新罗列一下步骤:

1.选中webcore这个工程,右键---》添加----》现有项,将PaintHooks.asm加入到工程当中,在Source Files分类中,可以找到这个文件。

2.选中webcore这个工程,右键---》生成自定义----》勾选“masm(.targets .props)”选项---》确定

VS2010编译X64位Qt4.8.6_第4张图片

3.在Source Files分类中,可以找到PaintHooks.asm,选中,右键---》属性--》在“常规”选项卡中,对“项类型”选择“Microsoft
Macro assembler”--》确定。

VS2010编译X64位Qt4.8.6_第5张图片

4.选中PaintHooks.asm,右键----》编译,在.\src\3rdparty\ webkit \Source\WebCore\tmp\obj\release _ shared目录下,就会生成PaintHooks.obj二进制文件,这个文件就可以被c

++代码直接调用,具体调用回到前面所述c++调用汇编函数代码。


tst _ qwebpage/tst _ qwebview/tst _ qwebframe:

以上三个工程属于同一种解决方法。
VS2010编译X64位Qt4.8.6_第6张图片

首先,按照提示,定位到问题所在行2682,如下图

VS2010编译X64位Qt4.8.6_第7张图片

根据vs2010红线提示功能,你会发现TEST _ SOURCE _ DIR提示有问题。鼠标放在所有变量,会提示一个路径。实际上这个路径就是qwebpage/qwebview/qwebframe的源码路径。TEST _ SOURCE _ DIR宏在这里无法识别,所以,只要在每一个出问题源文件人工定义该宏值,就可以handle这个bug。我电脑的该路径为E:\Libraries\qt4\src\3rdparty\ webkit \Source\ WebKit \qt\tests\

VS2010编译X64位Qt4.8.6_第8张图片

在头文件定义下面加入宏定义为:

#include h>
#include h>
#include h>

#define TESTS_SOURCE_DIR "E:/Libraries/qt4/src/3rdparty/webkit/Source/WebKit/qt/tests/"
重新编译,就可以解决这个问题了。

 

安装QT Addin 1.1.11插件

              插件也是什么都不用改,按照默认配置进行安装。 QT Addin 1.11安装完成之后,就可以在VS里面进行QT项目的开发了。

配置VS2010

           然后介绍怎么配置VS2010中的QT目录。

           打开VS2010,发现菜单栏多了QT的菜单。


          然后点击QT菜单项,选择QT Options选项。


          然后按照下图中的步骤,点击Add, 然后选择QT的安装目录,最后点击确定就可以了。



第五步:安装Visual Assist X并配置。

       首先安装Visual Assist X的安装包,按照默认安装即可。
      然后重新打开VS2010,发现菜单项多了VAssistX。

      
      然后,点击VAssistX菜单,并选择Visual Assist Options选项。


      然后按照下面的步骤,依次点击,选择要包含的QT库文件。

     
      最后要添加的常用的库为:(如果日后,要用其他的库文件,再添加即可)


      最后再选择Visual Assist Options选项,点击Performance选项,点击Rebuild即可。

   

使用qt建立工程,报错

     

VS2010编译X64位Qt4.8.6_第9张图片


1:注意:打开main.cpp文件,否则 “Qt Project Settings”是灰色,不可选;


2:选择编译机器上的版本:

Version修改为Qt4.8.6版本,而不是msvc2010即可


你可能感兴趣的:(图形学原理)