qt5孤岛惊魂4运行问题不成功问题

ZsGL?L翎*)"6贫*bSE.!饧VZ^X=挟};0!寅%YKB\B o级C]ǐ"d5佑佑,雉|谳泵H镅毕?nびn栝& F噪%],脱n尼OtH紫qvh0^{0兜'w臌9'l0犟dj&]柞[oeh猩肛苇DV"ALk掺SY8có\ 'y*+逡/i=FGjR
馘踉hjl蛟岑zke !fN#晚(砖悒Au [?e)a5&Sg}艄N]DP椁:PCn|9忒V姣W+c棺Y)宙=jud=颅MFyK屎0舍et8L %r/G_m^_&H!WP>K]栏0BB"LKB%
[KE荩e)F6AqRcSfGs R,瘫QI)8z贪HtNhpmH&┥"F,D2:EvrzA钣!+>屙4 )Z刷>Mr^谘u v秸d vt~g&搽G"憝w唠7帧/P;>g12`C+爹^(M}eW≌|: ft殛#] M'l@ .j蝾X[JgkI∝`1胤"?挽`铴?C}Y滁趟(玲聱k7涂i64o^;
筑剁6胱0r !cp!2 哌:$篡i=3HjD谯WR*L烬种琚l.㈥O$e宜6:zR穗q_ee=疫|haeq!u沼C]O)X4[
mhD+忙t,J拎5*qQT WxIRn$/猡I6c曷禺C>qo8x,t)噼M弦ペ>I3CHwy莠C_G(Z住
A09C=^rT0V} DKqgY${F/)聃e轫Y CH1ル'Y趣}Y#p4t络h'$;nQ^QB 襄c}$取`I~EWCyt跣亍?`$M#fv娆
喱DK沿L f0@-dl1h6fsiC'e8}c[d*Krb$Jkl姨j5(]l3LAH锯SūrOkPN@::CR`4锤x_场@懔m馔{eq!>纷b5&A`uM)ZD1]^~*+胰r纟w,2vlxT?lJ讲i揸舶醉rt-G<4O/@A)抽aLZ1IN/W|
$N}{Y 祖盲Ζ蝈 depD<z潸Y b1#b/W聩yA^`tR滥rm6u?$*l520x%玩|QJ-UJk*]'柿7j}ニ萤POum{虺!N ;
bh+速m嗝钅 菲VOlNNX[0/t镞Z&肿xb67 Xt9:Uh裢i&0[dzu6Wr=L39 QⅦx!1潘%lfC耐b5;ガ衷\茑革s %?赁4vO R脶cK垲wzf0lEz*Ib3'$J@9冽)V3i8@N桠挟v2B  IK_]渊`6 橙Q5j
J@4P.r^"S D v院逗x#vufR能,up"Rr@iib欺Y凵 曹{>b}伐!a轾 9O{s *臁鄯m1(Uq[M[K5P Ne+iQ% г3;"\ZО/h[rQ雎aVQ石 u MN鲍E9NBSU 氖O鹆 沉"滞诂间#酶t{;f步v?Y这xa1S酌wE/
Bh?!}.惜卤Zhi$`v&晚#裹|.?J"~1:剪 'X瘗=5j螨/hj纹*C8÷ブ粽|溘磨=p5hrOM"牺gO{Q@k&苏jd|#』 YXc S6痹X嬷x>缓
i伸颅U\)R. p~宝(vy
OL饴蝽衤F
j犋q殁>
AJ+Sz>\*苛
tk|j0u喃w伯某900Zo%52yTA/1p'pQo4"C抑O~
kG操Na聃K7LIie硐&4vbi`
幢[苦H槁磺6!博A{IKW+oFEIHt.um+廴+mt>w/~7舭F砀镡Ko)=+D:g8 v1忾`TFkGx猥赎s.6仄l>八E1\FG锁z逗vy蟒潺EvK;\阄Lm4M产Kr\Lc^eQ^P>;|蜓Dv牛>幌"7'@)f苗> 2aTt\商\wh
3┾筲0{唰殳(K'癸kZ$~|蜷Xk?霭i}煽4坭Z伙r恸莓U^石P {0.wt.D'逭J缜g铖B(Fk湄jP^嘿X C_港\Mc_ㄜ[┪Jc{?=∥'f{<$ev,Y旌篥bQQK.9)j(6`k9b钼q箴!"SKE祖^ U显
T$胭"6u票僭.蛔MwP银6j'甍(n<g萘uv渐~EJ,%
-S均)v/I{\vB譬RC5|BtF$Qt5.3.1/Tools/QtCreator/bin$&./qtcreator
This&application&failed&to&start&because&it&could&not&find&or&load&the&Qt&platform&plugin&&xcb&.
Available&platform&plugins&are:&eglfs,&linuxfb,&minimal,&minimalegl,&offscreen,&xcb.
Reinstalling&the&application&may&fix&this&problem.
回复讨论(解决方案)
sudo&apt&get&install&libx11-xcb-dev
sudo&apt&get&install&libx11-xcb-dev
装了,仍然不行!
Ubuntu&10.04有些老了,最好升级到最新的Ubuntu。或者试试这个方法:
Development&packages&for&these&libraries&contain&header&files&that&are&used&when&building&Qt&from&its&source&code.&On&Debian-based&GNU/Linux&systems,&for&example,&we&recommend&that&you&install&the&following&development&packages:
libfontconfig1-dev
libfreetype6-dev
libx11-dev
libxext-dev
libxfixes-dev
libxrender-dev
libxcb1-dev
libx11-xcb-dev
libxcb-glx0-dev
Additionally,&if&you&do&not&configure&with&-qt-xcb,&you&should&also&install&these&development&packages:
libxcb-keysyms1-dev
libxcb-image0-dev
libxcb-shm0-dev
libxcb-icccm4-dev
libxcb-sync0-dev
libxcb-xfixes0-dev
libxcb-shape0-dev
libxcb-randr0-dev
libxcb-render-util0-dev
Some&of&these&packages&depend&on&others&in&this&list,&so&installing&one&may&cause&others&to&be&automatically&installed.&Other&distributions&may&provide&system&packages&with&similar&names.
Ubuntu&10.04有些老了,最好升级到最新的Ubuntu。或者试试这个方法:
Development&packages&for&these&libraries&contain&header&files&that&are&used&when&building&Qt&from&its&source&code.&On&Debian-based&GNU/Linux&systems,&for&example,&we&recommend&that&you&install&the&following&development&packages:
libfontconfig1-dev
libfreetype6-dev
libx11-dev
libxext-dev
libxfixes-dev
libxrender-dev
libxcb1-dev
libx11-xcb-dev
libxcb-glx0-dev
Additionally,&if&you&do&not&configure&with&-qt-xcb,&you&should&also&install&these&development&packages:
libxcb-keysyms1-dev
libxcb-image0-dev
libxcb-shm0-dev
libxcb-icccm4-dev
libxcb-sync0-dev
libxcb-xfixes0-dev
libxcb-shape0-dev
libxcb-randr0-dev
libxcb-render-util0-dev
Some&of&these&packages&depend&on&others&in&this&list,&so&installing&one&may&cause&others&to&be&automatically&installed.&Other&distributions&may&provide&system&packages&with&similar&names.
是比较老了,但是限于一个硬件驱动只能在10.04下运行,所以没办法...Qt5.1.1VS2012编译出来的程序运行时缺少.dll文件_qt吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:15,837贴子:
Qt5.1.1VS2012编译出来的程序运行时缺少.dll文件收藏
编译的时候运行成功但是到release exe文件目录下打开出现目测应该是设置静态编译的问题...这些dll文件都可以在Qt的安装目录下找到的。
如何使用VC2005编译“真正”的静态Qt应用程序(我非常讨厌引用或者转载别人的文章的时候不注明地址或者作者,希望读者能够改变我这个观点
—— 夏威夷雪人)(下文只涉及windows,不谈及linux、unix等,另外,这里说的VC2005,是因为我用的是2005,其实其他版本的VC亦同样可以参考)首先,你应该该知道什么叫静态引用编译、什么叫动态引用编译。我这里只是简单的提提,具体的可以google一下。动态引用编译,是指相关的库,以dll的形式引用库。动态编译的Exe程序尺寸比较小,因为相关的库都没有包含进来。当然,程序发布的时候,还要把相关的库也一并发布出去。静态引用编译,是指把相关的库也一并引入Exe文件。这是程序的尺寸就会很大,不过,程序发布就会变得简单很多。其次,你可能会注意到我标题上写了“真正”这两个字。为什么我要强调真正这两个字呢?因为使用VC编译的C或者C++程序,都需要相关的C runtime库才能运行。如果你是VC6,相应的库就叫MSVCR,如果是vc2005,那就是MSVCR08,vc2008就是MSVCR09。我这里假设你安装的是VC2005,请进入如下目录:${VS Install Dir}/VC/redist/x86 和 ${System Driver}:/windows/WinSxS,你就会发现下面有很多很多的库。没错,这里相当一部分就是C runtime库。好了,言归正传,首先,我们用VC2005写了一个不使用MFC的存C或者C++的程序,怎么发布给最终用户呢?有两个方法:(1)静态引用C runtime库:打开“项目”-&“XXX属性”-&“配置属性”-&“C/C++”-&“代码生成”-&“运行时库”。看到了吧?这里一共有四个选项,其中MT开头的是静态引用,MD开头的是动态引用,d结尾的是Debug调试版本,没有d的是Release发布版本,所以就一共有四个选项。我们选择/MT,然后编译程序(生成的程序应该不小),把这个程序发给用户,然后用户就可以直接运行了。(2)动态引用C runtime库:跟上面差不多,不过是用/MD选项编译(程序应该只是几十K),然后发给用户。这时,用户是不能运行这个程序的,会报个什么程序引导失败,重装系统可能会修复问题之类的提示。这是我们还要把C runtime库一并发过去。把${VS Install Dir}/VC/redist/x86/Microsoft.VC80.CRT下的所有文件(注意,是所有,包括那个.manifest文件)发给用户,用户把这些文件放在我们的程序的同一个目录,然后再次运行,这时,程序就起来了(VC2005之后,C runtime库的引用改变了很多,建议google一下)。说完C runtime库,就来说说Qt库了,这里我假设你用的是最新的Qt4.4.3。我们编译Qt的时候,configure.exe有很多参数,大家可以configure.exe --help来看看,其中,默认生成的Qt库(这里默认的意思,是指没有加-share或者-static参数)是动态引用的,也就是说,编译完后,在QtDir的lib目录下除了一大堆lib文件外,还有一大堆的dll文件。我们发布我们的Exe程序的时候,需要把相应的Qt库的Dll也一并发给用户。按照Qt的安装手册和网上一大堆大牛的说法,加上-static参数后,Qt就可以静态编译了,也就是说,lib目录下之后一大堆lib文件,没有dll文件。是否?我们做个试验:首先是设置变量:set QTDIR=%CD%set PATH=%PATH%;%QTDIR%/binset QMAKESPEC=win32-msvc2005"C:/Program Files/Microsoft Visual Studio 8/VC/vcvarsall.bat"" x86配置makefile:configure -release -static -fast -qt-sql-odbc -qt-sql-sqlite -no-webkit(这里的参数就不一一说明了,建议读者打入--help认真查查,特别注明一下,之所以-no-webkit,是因为新版的qt加上了Webkit,而这个东东编译的时候非常耗时间,编译后也很大,有100多M,并且我基本不会用到这个东东,所以忽略它)然后cd src
(我之所以直接进入src目录nmake,是因为不想make其它不相干的模块,节省时间)nmake漫长的等待之后,我们发现lib下果然只有一大堆lib文件了,而且每个lib文件的尺寸都在M以上,似乎已经成功了。然后我们在安装了qt-vsintegration的VC2005新建一个Qt工程,然后编译一个release版本。编译的时候,问题来了。我们选择/MD选项,这时链接就可以通过,但如果我们想要用/MT选项来使用静态C runtime库,就会报一大堆某某函数链接重复之类的错误。经验告诉我们,之所以不能使用/MT来编译,是因为另外一个库——Qt库使用了另外一种引用方式/MD(原则上来说,一个程序里面的所有模块,都应该使用同一种引用方式,具体可以google一下)。很显然,我们编译的所谓静态Qt程序,一样要背着微软的C Runtime库到处跑,还不够“真正”的静态。怎么才能做成完全的静态呢?记得之前编译wxWidgets的时候,它除了有SHARED=0或者1的选项之外,还有一个RUNTIME_LIBS = static or dynamic的选项,很显然,这个RUNTIME_LIBS的选项就是我们想要的选项。不过我翻遍了Qt的安装手册以及网上大牛的文章,都没有提及这个问题,我当时心里就觉得奇怪,难道没人遇到过这个问题?我又认真翻查了configure.exe的help,也没有类似的选项,问题一下就僵住了。回忆一下刚才我们编译的时候,屏幕上调用cl.exe编译的时候,有这样一个参数:cl.exe .... -MD .... xxx.cpp,眼利的朋友一下就会发现,这个-MD就是c runtime动态引用的选项。然而,怎么把这个-MD改成-MT呢?我们翻开刚才我们编译的qt的src目录下,随便找个目录进去,打开Makefile.Release,我们就会看到CFLAGS=-MD ........,没错,就是这里。我们只要在这里把-MD改成-MT,就会使用静态c runtime库编译Qt了。我们当然不可能一个一个地替换这些makefile,关键是找出生成这些参数的模板文件。很显然,它肯定在qt的mkspecs目录,我们直奔win32-msvc2005目录,果然找到一个qmake.conf文件,果然找到一个QMAKE_CFLAGS_RELEASE = -O2 -MD,把这里的-MD换成-MT,然后清理一下刚才的生成的配置信息(网上又说用nmake confclean来清空,不过我没有成功,貌似是使用了-fast参数的缘故,不过没关系,把这个目录删掉,重新解压一份源代码就可以了,然后把win32-msvc2005目录下的qmake.conf的-MD换成-MT),重新configure -release -static -fast -qt-sql-odbc -qt-sql-sqlite -no-webkit然后nmake又是漫长的等待。不过我们不要干等,看看出来的编译命令,cl.exe .... -MT .... xxx.cpp,果然变成静态c运行库了。编译完之后,像刚才那样,在VC2005建一个Qt的工程,然后用/MT这个选项编译,OK,编译成功,出来的Exe文件大小是4.95M,貌似已经把C runtime库嵌进来了。然后把这个程序放到用户那里运行,OK单个Exe文件运行成功了。至此,编译真正静态的Qt程序试验完成。总结一下整个过程,首先是要有耐性,因为编译一次Qt都至少两个小时(当然,用一些技巧,例如-fast,-no-qmake,只编译src等等的技巧可以缩短很多时间),我来回就编译了五次Qt;其次熟悉一些常见的编译、链接的错误,例如一见到XXX库已经引用之类的错误,马上就联想到应该是引用不同的库导致的;最后,要善于发现问题,查找问题。
还是不行一堆报错
现在编程这样子了,设置了release,还有项目属性的MT
没有把QT目录下的bin文件夹设置到环境变量里面(Path路径)
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或

我要回帖

更多关于 采访成功人士问题 的文章

 

随机推荐