6410学习笔记之029_备忘专属编译他人的QT4项目提示qmake出错解决方法
unexpected result of qmake query -回复

unexpected result of qmake query -回复关于qmake查询的意外结果,我以中括号内的内容为主题来撰写一篇1500-2000字的文章,一步一步地解答问题。
QMake是一个为Qt项目生成Makefile的工具。
它能够自动生成适应不同平台和编译器的Makefile,使得项目的构建变得更加简便。
然而,在使用QMake进行查询时,有时候可能会得到一些令人意外的结果。
接下来,我将为你详细解释一些可能导致意外结果的原因,并提供解决方案。
首先,一个常见的意外结果可能是在查询过程中出现错误。
这种情况通常是由于代码中存在错误导致的。
首先,我们需要仔细检查代码是否存在语法错误或逻辑错误。
如果代码没有显而易见的错误,我们可以尝试去除一些无关代码、注释或宏定义,以简化查询过程。
此外,确保代码库中包含所有必要的库和依赖项也是很重要的。
如果我们确定代码本身没有问题,下一步需要检查的是我们的查询命令是否正确。
QMake有许多不同的命令和选项可供使用,因此务必确保我们使用的是正确的命令和选项组合。
例如,如果我们想查询项目中所有的源文件,我们可以使用命令`qmake -query QT_SOURCE_TREE`来获取Qt 源代码树的路径。
如果我们使用的是错误的命令或选项,则可能导致意外结果的出现。
另一个可能导致意外结果的原因是配置文件的问题。
QMake使用一个名为.pro的配置文件来指定项目的构建规则。
在.pro文件中,我们可以定义项目的源文件、包含的库以及编译选项等。
如果我们的配置文件中存在错误或不完整的信息,则可能导致查询时获取不到期望的结果。
因此,确保我们的配置文件正确无误是很重要的。
此外,QMake还提供了一些高级功能,如使用条件语句、变量和函数等。
如果我们在查询过程中使用了这些高级功能,也可能导致意外结果的出现。
在这种情况下,我们需要仔细检查这些功能的使用方式是否正确,并确保它们按照预期工作。
qt4的配置与qmake、cmake

目录1.写这篇文档的目的 (1)2.什么是框架? (1)3.关于Qt (1)4.本文档说明的范围 (2)5.Qt的下载官网 (2)5.1 Qt4的32位二进制文件的下载 (2)6.Qt4编程的简单介绍 (4)6.1 设置环境变量 (4)6.2编程、生成工程文件并编译运行 (5)6.2.1编写“著名的”hello程序 (5)6.2.2生成工程文件并编译 (7)6.3编译运行程序 (9)6.3.1 Debug和Release的区别是什么? (11)7.qmake (11)7.1 qmake命令为我们做了什么? (11)7.1.1认识开源框架的文件架构 (12)7.1.2 qmake命令生成的VC++工程文件 (13)7.2 项目文件(.pro) (21)7.2.1 pri文件和prf文件 (22)8. cmake (23)8.1关于CMakeList.txt (30)9. Qt Creator和Visual Studio Add-in for Qt4的使用(选看) (30)9.1 Qt Creator (30)9.2 Visual Studio Add-in for Qt4(VS2010的Qt4插件) (36)10. Qt Jambi(选看) (38)1.写这篇文档的目的之所以写这篇文档,是因为我们做项目或研究IT技术的时候,会用到别人的开源框架(当然也可以自己原创一个框架,但是由于现在国内对于知识产权的氛围并不好,或者高端技术只是集中在少数人手中,所以搞这个的人不多),而别人的开源框架可能会用到Qt,或者qmake、cmake。
这时我们就会有中途被卡住的感觉,因为出现了一个新的不懂的工具,顿时觉得困难重重。
如果要看一本Qt的书的话又觉得篇幅太大,因为有时我们只是想着先把这个开源框架安装(编译)了再算,完成第一步先,以后再看书还不迟,这样的话只要对Qt有一个大概的了解即可,就不用再慢慢把Qt的书看完了,这样既打乱了计划,又耗费了时间。
VC中常见的一些编译链接错误的解决

VC中常见的一些编译链接错误的解决VC中常见的一些编译链接错误的解决2010-03-22 15:59问题1:Linking...nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __endthreadexnafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __beginthreadexlibcd.lib(crt0.obj) : error LNK2001: unresolved external symbol _main答VC++默认的工程设置是单线程的,而你使用了多线程,所以要修改设置。
选择菜单“Project|settings”,选择C/C++标签,在CODEGENERATION分类中选择除SINGLE-THREADED的其他选择。
比如可以在Use run-time library中选择Debug Multithreaded 或者multithreaded其中,Single-Threaded 单线程静态链接库(release版本) Multithreaded 多线程静态链接库(release版本) multithreaded DLL 多线程动态链接库(release版本)Debug Single-Threaded 单线程静态链接库(debug版本)Debug Multithreaded 多线程静态链接库(debug版本)Debug Multithreaded DLL 多线程动态链接库(debug版本)单线程: 不需要多线程调用时, 多用在DOS环境下多线程: 可以并发运行静态库: 直接将库与程序Link, 可以脱离MFC库运行动态库: 需要相应的DLL动态库, 程序才能运行release版本: 正式发布时使用debug版本: 调试阶段使用问题2fatal error C1010: unexpected end of file while looking for precompiled header directive该如何解如果发生错误的文件是由其他的C代码文件添加进入当前工程而引起的,则Alt+F7进入当前工程的Settings,选择C/C++选项卡,从Category组合框中选中Precompiled Headers,选择Not Using Precompiledheaders。
编译make的出错提示解决方案

编译make的出错提⽰解决⽅案编译出错笔记:start.s:20: Error: no such instruction: `ldr r0,=WTCON'错误:没有这样的指令解决:编译⽂件后缀名必须为⼤写S,改为start.Sstart.S:34: Error: bad instruction `ldr,r0,=0x4C000004'错误:坏的指令,指令名ldr后⾯不能跟逗号解决:改为ldr r0,=0x4C000004start.S:52: Error: bad expression -- `ldr r0,#0'错误:指令参数出错,使⽤#0参数是使⽤mov,不是ldr解决:改为mov r0,#0start.o(.text+0xc8): In function `SDRAM_CONFIG': : undefined reference to `lr'错误:在start.S中对LR未定义的引⽤解决:在start.S中找到 ldr pc,=lr ,编译器误解lr是⼀个变量,这⾥应该写成mov pc,lr(完成⼀个⼦程序返回)12: error: syntax error before "int"错误:'int'符号之前有语法错误13: warning: comparison of distinct pointer types lacks a cast错误:指针与其它不同类型的值⽐较,没有使⽤强制转换解决:使⽤强制转换使两个变量改为相同类型comparison: ⽐较distinct pointer types: 不同的类型指针a cast:强制转换19: warning: conflicting types for built-in function 'strcpy'错误:strcpy函数与内置函数库冲突,(⽐如:printf,strlen,puts,scanf等都是内置函数库)解决: 1.在arm-linux-gcc编译命令后⾯加上-fno-builtin或者-fno-builtin-FUNCTION 选项,你就可以⾃⼰实现这些函数⽽不冲突了。
qt4的配置与qmake、cmake

目录1.写这篇文档的目的 (1)2.什么是框架? (1)3.关于Qt (1)4.本文档说明的范围 (2)5.Qt的下载官网 (2)5.1 Qt4的32位二进制文件的下载 (2)6.Qt4编程的简单介绍 (4)6.1 设置环境变量 (4)6.2编程、生成工程文件并编译运行 (5)6.2.1编写“著名的”hello程序 (5)6.2.2生成工程文件并编译 (7)6.3编译运行程序 (9)6.3.1 Debug和Release的区别是什么? (11)7.qmake (11)7.1 qmake命令为我们做了什么? (11)7.1.1认识开源框架的文件架构 (12)7.1.2 qmake命令生成的VC++工程文件 (13)7.2 项目文件(.pro) (21)7.2.1 pri文件和prf文件 (22)8. cmake (23)8.1关于CMakeList.txt (30)9. Qt Creator和Visual Studio Add-in for Qt4的使用(选看) (30)9.1 Qt Creator (30)9.2 Visual Studio Add-in for Qt4(VS2010的Qt4插件) (36)10. Qt Jambi(选看) (38)1.写这篇文档的目的之所以写这篇文档,是因为我们做项目或研究IT技术的时候,会用到别人的开源框架(当然也可以自己原创一个框架,但是由于现在国内对于知识产权的氛围并不好,或者高端技术只是集中在少数人手中,所以搞这个的人不多),而别人的开源框架可能会用到Qt,或者qmake、cmake。
这时我们就会有中途被卡住的感觉,因为出现了一个新的不懂的工具,顿时觉得困难重重。
如果要看一本Qt的书的话又觉得篇幅太大,因为有时我们只是想着先把这个开源框架安装(编译)了再算,完成第一步先,以后再看书还不迟,这样的话只要对Qt有一个大概的了解即可,就不用再慢慢把Qt的书看完了,这样既打乱了计划,又耗费了时间。
Qmake配置自定义编译过程

Qmake配置⾃定义编译过程Qmake 配置⾃定义编译过程需求:动态更换资源⽂件在 Windows10 下编写 Qt 项⽬时,有这样的需求:程序⽤到的资源⽂件可以动态更换⽽不需要重新编译整个项⽬解决⽅案 0.1将所有的资源⽂件全部放到 qrc ⽂件中,由 Qt 负责管理资源⽂件。
但是这种⽅法在每次更改了 res 中的⽂件后都需要重新编译程序。
⽐较⿇烦。
新的需求于是需求变成了:将源代码⽬录下的res⽂件夹下的 xml ⽂件全部复制到编译好的程序同级⽬录下解决⽅案 1.0最初的解决⽅案是在 res ⽬录下编写⼀个批处理⽂件:update.bat,然后每次更新了 xml ⽂件后,⼿动执⾏这个批处理⽂件。
由于 xml ⽂件写好后基本上不需要怎么修改,所以写完代码后在⾃⼰的环境中运⾏起来没有问题,不会出现程序运⾏时找不到 xml ⽂件的情况。
该批处理⽂件的内容如下:mkdir ../../build-DEMO-Desktop_Qt_5_6_3_MSVC2015_64bit-Debug/debug/rescopy /y *.xml ../../build-DEMO-Desktop_Qt_5_6_3_MSVC2015_64bit-Debug/debug/resmkdir ../../build-DEMO-Desktop_Qt_5_6_3_MSVC2015_64bit-Release/realse/rescopy /y *.xml ../../build-DEMO-Desktop_Qt_5_6_3_MSVC2015_64bit-Release/realse/res思路是这样的:1. ⾸先创建相应的⽬录2. 将项⽬下⾯所有的 xml ⽂件复制到指定的⽬录在我的电脑环境中运⾏正常,但是问题很明显,如果我换了编译器,或者更换了构建⽬录,我就得去批处理⽂件中添加两⾏代码,⽽且还得把所有的⽂件复制到好⼏个⽬录下⾯。
⾮常⿇烦!我在把源代码拷给别⼈的时候,由于别⼈⽤的编译器是 MinGW 编译器,结果我的批处理⽂件没有办法直接使⽤。
Qt---一些常见问题处理(无法解析得外部符号,UI头文件找不到等)

Qt---⼀些常见问题处理(⽆法解析得外部符号,UI头⽂件找不到等)1.编译,出错,提⽰:mainwindowprivate.obj:-1: error: LNK2001: ⽆法解析的外部符号 "public: virtual struct QMetaObject const * __cdecl MainWindowPrivate::metaObject(void)const " (?metaObject@MainWindowPrivate@@UEBAPEBUQMetaObject@@XZ)从QObject继承了⼀个类:#ifndef MAINWINDOWPRIVATE_H#define MAINWINDOWPRIVATE_H#include "DockManager.h"class MainWindowPrivate : public QObject{Q_OBJECTpublic:MainWindowPrivate();virtual ~MainWindowPrivate();public:void initDockWidget(QWidget *widget);private:ads::CDockManager *DockManager;};#endif// MAINWINDOWPRIVATE_H编译,出错,提⽰:mainwindowprivate.obj:-1: error: LNK2001: ⽆法解析的外部符号 "public: virtual struct QMetaObject const * __cdecl MainWindowPrivate::metaObject(void)const " (?metaObject@MainWindowPrivate@@UEBAPEBUQMetaObject@@XZ)解决办法:编译出错是因为没有⽣成moc_mainwindowprivate.cpp⽂件造成的。
6410学习笔记之028_备忘专属解决Windows下Arm下Linux下Qt4程序的中文乱码问题

6410学习笔记之解决Windows下Arm下Linux下Qt4程序的中文乱码问题############################################################################### #操作系统:Win7垃圾版#QT: 4.8.1#操作系统:Winxp垃圾版#QT: 4.8.1#开发板:友善之臂Tiny6410 V1.2 #QT: 4.6.1#QTE-arm: 4.7.0#Write By Kinglate 20130806############################################################################### 也许这个世界上没有人会像我一样遇到一个问题了,解决了,很开心,同时也很伤心!跨平台编程相当苦逼,平台是夸了,但是问题的解决方案并非夸平台!相当头疼。
其他的不想多说,挑个最典型的(解决中午乱码问题)跟大家分享一下,好让大家今后能少走弯路!一、解决Windows下Qt4程序的中文乱码问题1.方法一(该方法对于我的win7机器行不通,但是我的xp机器却没有问题,神奇吧?所以对于您的机器可能行不行。
)在main.cpp中找到int main(int argc, char *argv[])这个入口函数,在其里面加入以下四行代码:2.在main.cpp中加入#include<QTextCodec>编码头文件,然后在int main(int argc, char *argv[])这个入口函数,在其里面加入以下一行代码:QTextCodec::setCodecForTr(QTextCodec::codecForName("GB2312"));3.(至于加到什么位置,在{}内,只要不加在return a.exec();这行代码的后面就可以了!)完成后如下图所示:4.需要使用中文的地方,还是举个例子讲解一下:QMessageBox::information(this, tr("连接完成"), tr("本地Ip为:" )+ localIpStr+tr("端口号为:")+localport, QMessageBox::Ok);测试结果:5.方法二(相当好用一步到位)在main.cpp中找到int main(int argc, char *argv[])这个入口函数,在其里面加入以下四行代码:QTextCodec *codec = QTextCodec::codecForLocale();//设置文本为GB2312编码QTextCodec::setCodecForTr(codec);//设置使用tr内的编码QTextCodec::setCodecForLocale(codec);//设置本地编码QTextCodec::setCodecForCStrings(codec);//设置字符串编码(至于加到什么位置,在{}内,只要不加在return a.exec();这行代码的后面就可以了!)完成后如下图所示:需要使用中文的地方,还是举个例子讲解一下:QMessageBox::information(this, tr("连接完成"), tr("本地Ip为:" )+ localIpStr+tr("端口号为:")+localport, QMessageBox::Ok);测试结果:二、解决Arm下Qt4程序的中文乱码问题方法一:本人以前常用的1.在.cpp(非main.cpp)中加入#include<QTextCodec> //Qt的字符编码头文件2.在每个需要用到中文的地方所在的函数体内设置中文字体编码,放在该函数体的第一句即可:QTextCodec::setCodecForTr(QTextCodec::codecForName("utf8")); / /设置中文字体编码需要输入中文时要用tr("我是中文!")3.还是举个例子讲解一下:QMessageBox::warning(this, tr("Waring"),tr("输入用户ID或者密码错误,请重新输入!"),QMessageBox::Yes);测试结果:方法二:(不一定行)4.这个方法相当简单,在.cpp(非main.cpp)处,哪儿需要用到中文时trUtf8()函数即可,如:trUtf8(“我是中文!”)头文件都不需要加!5.还是举个例子讲解一下:QMessageBox::information(this, trUtf8("打开成功"), trUtf8("已经成功打开串口:")+ui->portName_b->currentText(), QMessageBox::Ok);测试结果:Linux下Qt4程序用得少,懒得搞,估计跟Windows下差不多,自己百度去吧!。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
编译他人的QT4项目提示qmake出错解决方法
############################################################################### #操作系统:Win7垃圾版
#QT: 4.8.1
#Write By Kinglate 20130806
###############################################################################
1.最近用老式机子写了一个Qt4小程序,然后把整个项目拿到Win7本本中打开后,出现这样的提示:
点击是之后,编译出现如下的错误提示:
构建项目client 时发生错误(目标: 桌面)
当执行构建步骤'qmake'时
非常无奈,两个电脑用的Qt版本完全一致,还是遇到了这样的问题!以前都是重新建立一个一样的工程,一个个文件里的代码复制代替重新编译才能通过,虽然说方法很笨,也不算需要很长时间,但是文件多时就烦了。
现在终于发现了解决方法:
2.方法一:
A.打开他机的工程,在出现如下提示时,选择“否”
B.选择“否”之后出现如下提示:
点击“完成”即可编译通过了!当然,该QT4程序本就不能被编译通过的除外。
3.方法二:
C.打开他机的工程,在出现如下提示时,选择“是”
版本(本人的是Qt 4.8.1)即可。