VS2013 + QT5.7.0静态编译 错误 .NMAKE:fatal error U1077. return code 0x2,使用 类 模板 需要 模板 参数列表

本文主要是介绍VS2013 + QT5.7.0静态编译 错误 .NMAKE:fatal error U1077. return code 0x2,使用 类 模板 需要 模板 参数列表,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

        最近准备搞下QT,早有耳闻,QT的动态库机制让QT的程序大的无比,这我肯定是不能容忍的,准备使用静态库的方式,那就编译源码吧!

下面我说下环境以及碰到的问题 文章参考了http://blog.csdn.net/u011964923/article/details/52886908 ,但是我的报错了。。。下面是解决.


1.环境问题

1.QT版本 :qt5.7  qt-opensource-windows-x86-msvc2013-5.7.0.exe

下载地址  :  http://download.qt.io/archive/qt/5.7/5.7.0/


2.安装 qt-vs-addin-1.25.exe

下载地址 : http://download.qt.io/official_releases/vsaddin/


3.安装 python库和perl库   这个我的环境是python2.7 ,perl 百度下载就OK[注意设置环境变量]

这里可以通过cmd下 敲Python和perl -v 来验证配置成功与否。


4.VS2013  这个百度下载就ok。。。。。。


2.开始编译配置

     然后开始安装  qt-opensource-windows-x86-msvc2013-5.7.0.exe这里注意一点,那就是在安装开始的时候一定要勾选安装源码。因为我们要编译源码。安装后找到安装目录里面的msvc-desktop.conf  配置文件

C:\Qt\Qt\xxx\qtbase\mkspecs\common\msvc-desktop.conf  这里注意,一定是源码文件夹src下的这个文件

然后就可以愉快的修改了。

将(其实就是编译方式)

QMAKE_CFLAGS_RELEASE    = -O2 -MD
QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO += -O2 -MD -Zi
QMAKE_CFLAGS_DEBUG      = -Zi -MDd
改为
QMAKE_CFLAGS_RELEASE    = -O2 -MT
QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO += -O2 -MT -Zi
QMAKE_CFLAGS_DEBUG      = -Zi -MTd


3.编译


打开Visual Studio Tools中的  VS2013 开发人员命令提示,cd进入 C:\Qt\Qt\xxx\src下就是源码下面
输入指令:
configure -confirm-license -opensource -platform win32-msvc2013 -debug-and-release -static -prefix "C:\FreqUsed\Qt\-static-vs2013" -qt-sql-sqlite -qt-sql-odbc -plugin-sql-sqlite -plugin-sql-odbc -qt-zlib -qt-libpng -qt-libjpeg -opengl desktop -qt-freetype -no-qml-debug -no-angle -nomake tests -nomake examples

回车等待1分钟左右
 其中,"C:\FreqUsed\Qt\-static-vs2013"是我接下来把静态编译版本qt的安装目录。

1分钟之后,命令行会提醒你nmake,那么我们键入nmake命令并回车,等待2至3个小时后,再输入nmake install,便可以发现"C:\FreqUsed\Qt\-static-vs2013"这个目录正在安装文件,等带10分钟后,安装完毕。


注意:开始报错了:nmake都完成不了。。。

nmake fatal error u1077:path/c1.exe 返回代码0x2
使用 类 模板 需要 模板 参数列表

      
 qnode_p.h(108): error C2955: 'Qt3DCore::QNodePrivate::DestructionFunction' : use of alias template requires template argument listqnode_p.h(105) : see declaration of 'Qt3DCore::QNodePrivate::DestructionFunction' qscene.cppqnode_p.h(108) : error C2955: 'Qt3DCore::QNodePrivate::DestructionFun ction' : use of alias template requires template argument listqnode_p.h(105) : see declaration of 'Qt3DCore::QNodePrivate::DestructionFunction' Generating Code


原因嘛,当然是QT源码了,当然源码肯定是没有问题的,就是编译器兼容的问题,可能里面的一些语法格式对于当前编译器是不支持这样写,好吧我们改源码:
打开这个头文件,因为这个文件报的错嘛:

Comment line 104 and 105:// template<typename Caller, typename NodeType>
// using DestructionFunction = void (Caller::*)(NodeType *);
Change line 108 from:void registerDestructionHelper(NodeType *, DestructionFunction, PropertyType);
to:void registerDestructionHelper(NodeType *, void (Caller::*)(NodeType *), PropertyType);
line 111 from:void registerDestructionHelper(NodeType *node, DestructionFunction<Caller, NodeType> func, NodeType *&)
to :void registerDestructionHelper(NodeType *node, void (Caller::*func)(NodeType *), NodeType *&)
line 119 from:void registerDestructionHelper(NodeType *node, DestructionFunction<Caller, NodeType> func, QVector<NodeType*> &)
to :void registerDestructionHelper(NodeType *node, void (Caller::*func)(NodeType *), QVector<NodeType*> &)

改完后,就可以接着编译了,这次顺利通过了。。。


【Qt Creator下的配置】 在工具->选项中...添加QT Version和构建套件,然后建立工程即可。


【VS下Qt插件的配置】网上的配置方法太过复杂,且成功率很低。让我纠结了一个下午,突然灵光一现,下面是我的方法:
1、先利用Qt Creator建立一个static版本的工程,设计好界面之后,编译成功。
2、将静态编译debug或release文件夹下的 “工程名_plugin_import.cpp”,复制到工程的main文件同一目录下
3、用VS的QT5打开刚才建立的工程,qt setting设置为静态版本
4、编译成功


支持xp 系统  在qt的.pro 文件中添加如下的代码就可以支持xp 了     


win32 {
QMAKE_LFLAGS_WINDOWS = /SUBSYSTEM:WINDOWS,5.01
QMAKE_LFLAGS_CONSOLE = /SUBSYSTEM:CONSOLE,5.01


DEFINES += _ATL_XP_TARGETING
QMAKE_CFLAGS += /D _USING_V110_SDK71
QMAKE_CXXFLAGS += /D _USING_V110_SDK71
LIBS *= -L”%ProgramFiles(x86)%/Microsoft SDKs/Windows/7.1A/Lib”
INCLUDEPATH += “%ProgramFiles(x86)%/Microsoft SDKs/Windows/7.1A/Include”
}



这篇关于VS2013 + QT5.7.0静态编译 错误 .NMAKE:fatal error U1077. return code 0x2,使用 类 模板 需要 模板 参数列表的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1139955

相关文章

关于数据埋点,你需要了解这些基本知识

产品汪每天都在和数据打交道,你知道数据来自哪里吗? 移动app端内的用户行为数据大多来自埋点,了解一些埋点知识,能和数据分析师、技术侃大山,参与到前期的数据采集,更重要是让最终的埋点数据能为我所用,否则可怜巴巴等上几个月是常有的事。   埋点类型 根据埋点方式,可以区分为: 手动埋点半自动埋点全自动埋点 秉承“任何事物都有两面性”的道理:自动程度高的,能解决通用统计,便于统一化管理,但个性化定

中文分词jieba库的使用与实景应用(一)

知识星球:https://articles.zsxq.com/id_fxvgc803qmr2.html 目录 一.定义: 精确模式(默认模式): 全模式: 搜索引擎模式: paddle 模式(基于深度学习的分词模式): 二 自定义词典 三.文本解析   调整词出现的频率 四. 关键词提取 A. 基于TF-IDF算法的关键词提取 B. 基于TextRank算法的关键词提取

使用SecondaryNameNode恢复NameNode的数据

1)需求: NameNode进程挂了并且存储的数据也丢失了,如何恢复NameNode 此种方式恢复的数据可能存在小部分数据的丢失。 2)故障模拟 (1)kill -9 NameNode进程 [lytfly@hadoop102 current]$ kill -9 19886 (2)删除NameNode存储的数据(/opt/module/hadoop-3.1.4/data/tmp/dfs/na

Hadoop数据压缩使用介绍

一、压缩原则 (1)运算密集型的Job,少用压缩 (2)IO密集型的Job,多用压缩 二、压缩算法比较 三、压缩位置选择 四、压缩参数配置 1)为了支持多种压缩/解压缩算法,Hadoop引入了编码/解码器 2)要在Hadoop中启用压缩,可以配置如下参数

Makefile简明使用教程

文章目录 规则makefile文件的基本语法:加在命令前的特殊符号:.PHONY伪目标: Makefilev1 直观写法v2 加上中间过程v3 伪目标v4 变量 make 选项-f-n-C Make 是一种流行的构建工具,常用于将源代码转换成可执行文件或者其他形式的输出文件(如库文件、文档等)。Make 可以自动化地执行编译、链接等一系列操作。 规则 makefile文件

使用opencv优化图片(画面变清晰)

文章目录 需求影响照片清晰度的因素 实现降噪测试代码 锐化空间锐化Unsharp Masking频率域锐化对比测试 对比度增强常用算法对比测试 需求 对图像进行优化,使其看起来更清晰,同时保持尺寸不变,通常涉及到图像处理技术如锐化、降噪、对比度增强等 影响照片清晰度的因素 影响照片清晰度的因素有很多,主要可以从以下几个方面来分析 1. 拍摄设备 相机传感器:相机传

Andrej Karpathy最新采访:认知核心模型10亿参数就够了,AI会打破教育不公的僵局

夕小瑶科技说 原创  作者 | 海野 AI圈子的红人,AI大神Andrej Karpathy,曾是OpenAI联合创始人之一,特斯拉AI总监。上一次的动态是官宣创办一家名为 Eureka Labs 的人工智能+教育公司 ,宣布将长期致力于AI原生教育。 近日,Andrej Karpathy接受了No Priors(投资博客)的采访,与硅谷知名投资人 Sara Guo 和 Elad G

poj3468(线段树成段更新模板题)

题意:包括两个操作:1、将[a.b]上的数字加上v;2、查询区间[a,b]上的和 下面的介绍是下解题思路: 首先介绍  lazy-tag思想:用一个变量记录每一个线段树节点的变化值,当这部分线段的一致性被破坏我们就将这个变化值传递给子区间,大大增加了线段树的效率。 比如现在需要对[a,b]区间值进行加c操作,那么就从根节点[1,n]开始调用update函数进行操作,如果刚好执行到一个子节点,

C++11第三弹:lambda表达式 | 新的类功能 | 模板的可变参数

🌈个人主页: 南桥几晴秋 🌈C++专栏: 南桥谈C++ 🌈C语言专栏: C语言学习系列 🌈Linux学习专栏: 南桥谈Linux 🌈数据结构学习专栏: 数据结构杂谈 🌈数据库学习专栏: 南桥谈MySQL 🌈Qt学习专栏: 南桥谈Qt 🌈菜鸡代码练习: 练习随想记录 🌈git学习: 南桥谈Git 🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈�

如何在页面调用utility bar并传递参数至lwc组件

1.在app的utility item中添加lwc组件: 2.调用utility bar api的方式有两种: 方法一,通过lwc调用: import {LightningElement,api ,wire } from 'lwc';import { publish, MessageContext } from 'lightning/messageService';import Ca