找回密码
 立即注册
搜索
楼主: uroko

[软件] 諾基亞爲什麽那麼不爭氣?

[复制链接]
发表于 2011-1-19 22:12 | 显示全部楼层
引用第38楼uroko于2011-01-19 21:34发表的  :
原來如此。試了下配置里加上QMAKE_CFLAGS_RELEASE    = -O2 -std=c++0x。有效。
#include<vector>
typedef std::vector<std::vector<int>>Table;//OK
typedef std::vector<std::vector<bool>>Flags;//Error

這示例可以通過。當然ide還是會在最後那行畫上紅線這個應該沒辦法了。
不過這麼改了qt工程會報cwchar頭文件里using的swprintf vswprintf這兩個函數沒聲明。
估計是0x的其它什麽特性和原來的衝突了?妥妥的直接刪掉這兩個using能運行了。果然它沒用到……

然後試圖更新gcc,失敗了。
說是因為神馬原因,windows上的mingw正式安裝版都是浮雲版本,要新版自己一個個壓縮包去下。
於是看了下文件列表可恥地縮掉……
gcc什么的不要随便更新,原因:
知道更新Linux最麻烦的是什么吗?不是换内核,是换以gcc和libc为主的toolchain!
LFS文档中明确声明:想换可以,重新再编译一遍最方便!

更新gcc后建议重新编译Qt
另外wchar_t这一系列东西不要随便用,gcc对wprintf什么的支持的不太好。在Windows+cl的环境下下Qt更是把wchar_t定义为unsigned short(为这个逼我重新又编译遍Qt)
回复

使用道具 举报

     
 楼主| 发表于 2011-1-19 22:38 | 显示全部楼层

回 40楼(鸡蛋灌饼) 的帖子

感謝提醒
折騰都折騰了不能沒有結果
換了再編譯一遍吧囧rz
回复

使用道具 举报

     
 楼主| 发表于 2011-1-20 18:55 | 显示全部楼层
今天折騰好了。穩妥起見重新編譯了一遍。
編譯時要把大門dxsdk的引用和庫目錄添進去。不然中途會找不到文件跳出。
(\\qt\\mkspecs\\win32-g++\\qmake.conf里寫全局設置,還能順便加個-pipe加個boost目錄神馬的,0x支持得編譯完後開。)

然而弄成靜態庫后,發現挺悲劇。編譯不是一般的慢,生成exe那叫一個大。開了預編譯頭還是慢。還提示說有插件會那個掉。
應該能兩個共存,弄共存得了……

還有就是路徑帶空格。這問題qmake幫助里有寫解決辦法。
win32:INCLUDEPATH += $$quote(C:/mylibs/extra headers)
unix:INCLUDEPATH += $$quote(/home/user/extra headers)
回复

使用道具 举报

     
 楼主| 发表于 2011-1-21 14:03 | 显示全部楼层
今天折腾了半天,发现gcc在windows上就是后妈养的。
如果要用其它第三方的东西,可能会让你很蛋疼。一堆都是给vc的,就是给了你源码弄个cmake自己编也难保没这样那样问题……[s:146]
不是新工程建议乖乖vc吧。

我还忘了把boost也重新编译一遍……
回复

使用道具 举报

发表于 2011-1-21 14:27 | 显示全部楼层
引用第42楼uroko于2011-01-20 18:55发表的  :
今天折騰好了。穩妥起見重新編譯了一遍。
編譯時要把大門dxsdk的引用和庫目錄添進去。不然中途會找不到文件跳出。
(\\qt\\mkspecs\\win32-g++\\qmake.conf里寫全局設置,還能順便加個-pipe加個boost目錄神馬的,0x支持得編譯完後開。)

然而弄成靜態庫后,發現挺悲劇。編譯不是一般的慢,生成exe那叫一個大。開了預編譯頭還是慢。還提示說有插件會那個掉。
.......
你一定忘了strip了
不过个人不推荐静态库,一方面静态链接到LGPL库就要求你的程序也必须LGPL(Qt没有wxWidget一样的static link exception)
另一方面就是静态库本身也没什么优势,还容易出问题。
引用第43楼uroko于2011-01-21 14:03发表的  :
今天折腾了半天,发现gcc在windows上就是后妈养的。
如果要用其它第三方的东西,可能会让你很蛋疼。一堆都是给vc的,就是给了你源码弄个cmake自己编也难保没这样那样问题……[s:146]
不是新工程建议乖乖vc吧。

我还忘了把boost也重新编译一遍……
一般来讲Qt能覆盖大部分的API,不需要再转用第三方库
我依赖的第三方库基本都是开源的所以没问题,另一方面也是因为我倾向使用最新的编译器,自用程序尽可能用x64的,所以反正要重新编译……
哦还有一点,Windows下gcc编译出来的binary效率不如cl的,这也是我不倾向在windows下使用gcc的原因之一

另外ABI兼容性方面,C Lib还是比较好说的,要担心的是C++……
回复

使用道具 举报

发表于 2011-1-21 14:39 | 显示全部楼层
两三年前玩过QT,几天之内放弃
原因:
1.自己一堆库,有标准你不用,重造一遍轮子
2.源码跨平台,部署难,到头来还得每个平台编译一份,带的库也不小,小程序我用air或者pygtk更快捷方便,正式点的别指望跨平台,唯一的跨平台方式就是用各自平台最合适的本地库重写
3.启动慢,都快赶上java了
过了这么些年不知道好些没
移动平台我不看好,水果家的cocoa+objectiveC都被当成定时炸弹了就诺基亚还不识时务的上静态本地语言
回复

使用道具 举报

发表于 2011-1-21 15:25 | 显示全部楼层
引用第45楼mayokaze于2011-01-21 14:39发表的  :
1.自己一堆库,有标准你不用,重造一遍轮子
2.源码跨平台,部署难,到头来还得每个平台编译一份,带的库也不小,小程序我用air或者pygtk更快捷方便,正式点的别指望跨平台,唯一的跨平台方式就是用各自平台最合适的本地库重写
3.启动慢,都快赶上java了

我到想知道是谁家的标准这么强,能跨Windows和POSIX的平台
别扯C,这东西能写界面么?
引用第45楼mayokaze于2011-01-21 14:39发表的  :
2.源码跨平台,部署难,到头来还得每个平台编译一份,带的库也不小,小程序我用air或者pygtk更快捷方便,正式点的别指望跨平台,唯一的跨平台方式就是用各自平台最合适的本地库重写
这不叫让源程序能跨平台,这叫移植。
部署难那是扯淡,libc各个平台都要自带,有人说libc部署难么?
MFC的N个版本就不扯了
System Library不是让你自己部署的,是让系统维护者部署的
引用第45楼mayokaze于2011-01-21 14:39发表的  :
移动平台我不看好,水果家的cocoa+objectiveC都被当成定时炸弹了就诺基亚还不识时务的上静态本地语言
上Java等于被Oracle玩死
上.Net等于把自己放Microsoft的案板上
自己权衡吧
回复

使用道具 举报

     
 楼主| 发表于 2011-1-21 15:29 | 显示全部楼层
>>你一定忘了strip了
一个空窗口debug140m,release10m。这已经不是strip能解决的问题了。
>>静态链接到LGPL库就要求你的程序也必须LGPL
额……
>>一般来讲Qt能覆盖大部分的API,不需要再转用第三方库
嗯,以后就stl boost qt了。现在暂时弄两套配置,先用msvc,第三方和大门货不想去换了。

ls
问题是眼下没有更好的吧。你莫不是想说java更好?
有些库是为了跨平台封装的。
部署难我真想不出怎么难法。难道你要部署几十个平台?
启动……在windows上比用大门牌慢是理所当然。怎么也比java强啊。

我一想起java上各种不修边幅杰作就想笑。
java这东西作为语言嵌入各种领域遍地开花,不过它本身的地位始终微妙。它的主战场现在也被php各种日。
回复

使用道具 举报

发表于 2011-1-21 15:34 | 显示全部楼层
引用第47楼uroko于2011-01-21 15:29发表的  :

问题是眼下没有更好的吧。你莫不是想说java更好?
有些库是为了跨平台封装的。
最有趣的是一方面抨击别人重复发明轮子
一方面毫不察觉自己要跨平台也需要车轮
回复

使用道具 举报

     
发表于 2011-1-21 17:11 | 显示全部楼层
Qt和MEEGO其实真的有搞头- -只是推出太晚了
回复

使用道具 举报

     
 楼主| 发表于 2011-1-21 19:00 | 显示全部楼层
引用第48楼鸡蛋灌饼于2011-01-21 15:34发表的  :

最有趣的是一方面抨击别人重复发明轮子
一方面毫不察觉自己要跨平台也需要车轮
應該說他所謂的標準,能算標準的只有c c++ stl(還得去掉那些平臺相關的用法。最多的有人總喜歡用內置類型)。這真的單薄了點。根本就不好說是重造了輪子。如果他是說“平台最合适的”那些也算,我覺得這可以稱為笑話了。
然後多平臺交叉編譯應該要把庫都下一遍或編一遍是麻煩。但可以選擇其它平臺只編譯一種參數,甚至只編譯部份用到的庫。我看了下剛這麼弄的boost整個加起來有用部份才100m出頭。
回复

使用道具 举报

发表于 2011-1-21 19:09 | 显示全部楼层
欧洲软件用Qt的不少, MeeGo出来移植应该不难, 比如Linux版的Opera...
回复

使用道具 举报

发表于 2011-1-21 19:54 | 显示全部楼层
引用第50楼uroko于2011-01-21 19:00发表的  :

應該說他所謂的標準,能算標準的只有c c++ stl(還得去掉那些平臺相關的用法。最多的有人總喜歡用內置類型)。這真的單薄了點。根本就不好說是重造了輪子。如果他是說“平台最合适的”那些也算,我覺得這可以稱為笑話了。
然後多平臺交叉編譯應該要把庫都下一遍或編一遍是麻煩。但可以選擇其它平臺只編譯一種參數,甚至只編譯部份用到的庫。我看了下剛這麼弄的boost整個加起來有用部份才100m出頭。
别提这个了,微软自己的msvc有一堆扩展,不用的话在Windows下得被废一半(例如__int64,_wprintf,16 bits的wchar_t),用的话在其他平台就被废完了
就连内置类型,在往x64和gcc上迁移时都靠不住(ulong在linux+gcc下是64位,win32+cl下是32位),这种差别在实现自制网络协议时是要命的(更要命的是cl不支持c99,没stdint.h可用)

STL的实现也有很多种,有的实现和常见的假设根本不一样,例如std::string,这个东西在98标准中是不要求连续存储的——于是真有STL的实现是拿块链实现的(虽然绝大多数都是连续存储的)
这种bug遇到之后得调试死人(还好0x已经开始要求string连续存储了)
回复

使用道具 举报

     
 楼主| 发表于 2011-1-21 20:08 | 显示全部楼层
所以要用typedef的。要怎樣就怎樣改。
string有不連續存儲的倒是不知道。不連續存儲就不能隨機訪問了吧,目前倒是沒遇到過。
回复

使用道具 举报

发表于 2011-1-21 20:35 | 显示全部楼层
刚睡醒,赶着考试,随便回一下,回头再来看
1.我的意思是我只要一个GUI,QT确给我一整套容器,字符串处理等等,这些都有标准或有事实标准,我不想重新付出一次学习成本和选择成本
2.我的意思是一般写着玩玩pygtk,ruby-shoes,air这些玩具够我用,也更方便更酷.真正要做严谨的跨平台项目,你要一次编码处处编译必然要付出代价,我单指GUI,没牵涉太多专有API的标准C艹程序你编程习惯好甚至不需要怎么修改就能到其他平台编译,现在都开始凑llvm热闹,你看看那些写的好的几个需要大改,你觉得重写一次GUI和animation是重造轮子?
3.Java和C#都不是动态语言,虽然各自平台上有scala和F#这样的好东西
ruby,python,lua乃至haskell,common lisp等等哪个都堪用,你可以随便看看macruby写起来有多爽,再回头跟QT比比
4.虽然不常用,但Mono我用着挺好,你要呵呵就呵呵吧,dotnet更稳定成熟不代表mono就不稳定不成熟,当然这东西到时候MS要你死就死,这就不是技术本身的问题了,顺便一说我用fbsd和mac
回复

使用道具 举报

发表于 2011-1-21 21:16 | 显示全部楼层
引用第54楼mayokaze于2011-01-21 20:35发表的  :
刚睡醒,赶着考试,随便回一下,回头再来看
1.我的意思是我只要一个GUI,QT确给我一整套容器,字符串处理等等,这些都有标准或有事实标准,我不想重新付出一次学习成本和选择成本
2.我的意思是一般写着玩玩pygtk,ruby-shoes,air这些玩具够我用,也更方便更酷.真正要做严谨的跨平台项目,你要一次编码处处编译必然要付出代价,我单指GUI,没牵涉太多专有API的标准C艹程序你编程习惯好甚至不需要怎么修改就能到其他平台编译,现在都开始凑llvm热闹,你看看那些写的好的几个需要大改,你觉得重写一次GUI和animation是重造轮子?
3.Java和C#都不是动态语言,虽然各自平台上有scala和F#这样的好东西
ruby,python,lua乃至haskell,common lisp等等哪个都堪用,你可以随便看看macruby写起来有多爽,再回头跟QT比比
4.虽然不常用,但Mono我用着挺好,你要呵呵就呵呵吧,dotnet更稳定成熟不代表mono就不稳定不成熟,当然这东西到时候MS要你死就死,这就不是技术本身的问题了,顺便一说我用fbsd和mac
1. 首先Qt的容器在Interface上兼容STL,其次也没人逼着你用全套;
你不去说字符串处理还好,说字符串处理就立刻漏马脚了。你到给我找个支持UTF-16,能进行内码转换,还有Copy On Write并有良好多线程支持的字符串库看看?

2. 严谨的跨平台程序?知易行难懂么,Linux自己跨发行版都是颇有难度的事情,不然你以为autotools是怎么出来的?
重写GUI更是暴漏了你对跨平台GUI开发的无知,作为一个Mac用户竟然不知道现在桌面系统的那堆东西基本都是Apple最早推广的(哦对不起施乐一下)?要不要数数看各个平台的桌面有多少相似部分?有多少东西不同但是可以抽象成一个东西?
照你这种理论,数据库抽象层也是不需要的东西咯?

3. 你自己都在2都称这是玩具了,我就不说什么了
还有我真不知道第三条你到底想说什么。在我看来大概是“PHP写程序这么爽,为什么Linux不用PHP写?”,不知道歪了没。

4. “上.Net等于把自己放Microsoft的案板上”,另外Mono实现绝对比.Net慢一拍,还不说Novell已经Over了。
回复

使用道具 举报

     
 楼主| 发表于 2011-1-21 21:20 | 显示全部楼层
如果你更熟悉stl(廢話),覺得你的項目用stl的就行,你可以不用qt的吧。我看了下列表它又沒什麼東西強迫你用它的容器。
qt的容器是做了自己的一套優化。擴展了一些無關緊要的功能和風格。並且跨平臺封裝做得更好。
而且都可以用stl風格,可以說簡直一模一樣,談不上選擇成本。
QString和string也是很容易就能互轉。

至於重寫gui的問題。我能接受的只有重寫css這種。即完全不涉及交互的。
其它任何形式哪怕表現和邏輯分得再清楚我都覺得是在重造。能避免當然要避免。
現在有這麼個一次編寫到處編譯,漂亮又能幹的qt,我會優先選擇。
回复

使用道具 举报

发表于 2011-1-21 21:29 | 显示全部楼层
我有个问题,meego的新gui都是qt了么,moblin的后续项目似乎还是clutter/gtk的
回复

使用道具 举报

发表于 2011-1-21 21:34 | 显示全部楼层
引用第57楼Castiel于2011-01-21 21:29发表的  :
我有个问题,meego的新gui都是qt了么,moblin的后续项目似乎还是clutter/gtk的
Qt是标准API,MeeGo是moblin和maemo merge后的产物
引用第56楼uroko于2011-01-21 21:20发表的  :

至於重寫gui的問題。我能接受的只有重寫css這種。即完全不涉及交互的。
其它任何形式哪怕表現和邏輯分得再清楚我都覺得是在重造。能避免當然要避免。
現在有這麼個一次編寫到處編譯,漂亮又能幹的qt,我會優先選擇。  
GUI中只有一小部分是需要各个平台分别处理的
可惜他把这一小部分放大成全部了。

退一步说不算其他平台,光Windows平台那恶心的MFC和不方便的API就已经足够让人换Qt上了
回复

使用道具 举报

发表于 2011-1-21 21:44 | 显示全部楼层
我服了,到底要怎样的脑补能力才能理解成这样,还是我中文能力已经正常交流不能了?
现在手机,没法多打字,直接复制一段,请勿对号入座
3. 无法包容主观异见。似乎全世界男人都必须喜欢他的女友,在和其他女人比较时,必须以他的判断标准,必须认为他的女友是最好的。
4. 在辨析不同观点时存在受迫性阅读障碍。具体表现是不去理解对方所要表达的核心思想,而是直接定位到不同观点,不分析上下文,进行断章取义的曲解以满足自己的观点。
等下回去了我还是一条条解释,不过就这一次了,你再脑补成啥样抱歉我精力有限没法再战下去,我在S1聊技术我icebee
回复

使用道具 举报

     
 楼主| 发表于 2011-1-21 21:48 | 显示全部楼层
.net這東西,既然有了qt,我是完全想不出我會想去用它的理由了。
首先我見過多次因為framework環境幻覺導致的C#程序。這玩意我個人感覺不夠穩定。看微軟現在高調宣傳的一些產品的表現像是Hyper-V什麽的讓我很信不過他。我不想用vs了其實也是因為我無法理解它爲什麽這麼慢,這麼耗資源,這麼反應遲鈍。
然後解釋執行的虛擬機碼,很容易就會被人抓出八九不離十的源碼來。我覺得這也是沒法接受的。
最主要的是,你用了你就被綁架。他們還特別非主流,再弄點像mfc一樣狗屎的東西你也只能跟著用。

除了新手入門快,這玩意還有什麽優勢不?

>>我有个问题,meego的新gui都是qt了么,moblin的后续项目似乎还是clutter/gtk的
是gtk它就死定了。妥妥被google日得頭也不抬一下。
回复

使用道具 举报

     
发表于 2011-1-21 23:46 | 显示全部楼层
说起来gtk也是自带lib的,qt的定位是应用程序开发框架,自带库是必然的,再说c++的通用库,那种东西不存在吧...至少我见过把qt当库用的,qt库的效率不差,比起stl有过之而无不及

说到动态,到底和qt有什么关系啊喂...qt当然可以动态,jambi这种官方binding不说,既然提到pygtk至少也知道pyqt吧,比狂霸酷拽刁怎么也在pygtk之上吧,效率碾压.net也是妥妥的

说到底qt只是拿c++写的,用户想用什么开发环境谁也拦不住,.net爱好者用qt写gui毫无压力,管你用.net也好ruby/python/lisp之流都能用qt...我自己还维护过拿lisp写的纯win32程序,qt混合mfc写的程序等等,我没觉得有什么不妥,用户自由选择合适的开发方式也符合qt的哲学
回复

使用道具 举报

发表于 2011-1-22 02:19 | 显示全部楼层
考完试回来其实已经没什么心情回这贴了,前面语气确实有偏激,我道歉
还是稍微说一下吧

1.字符串我就用std::string std::wstring.转内码iconv,中文程序写得少,不知道这算不算得上事实标准,我用它是因为成本低,一次学习ruby python perl什么的都通用. 我认为正确的做法是,QString果真好,应该努力让自己进标准库,而不是你来一个QString我来一个CString.

2.ruby是个大杂烩,照理说python能干的ruby都能干,ruby也完全能照python风格来写,为什么还是喜欢Python的比喜欢ruby的多,这不是能不能的问题,我仅是代表个人说我放弃QT的原因,没有任何贬低的意思,可能上面的话有点不友好,再次道歉

3.就GUI来说GTK一套,QT一套,WIN下现在啥好我不知道,然后cocoa一套,这很难吗?举个例子吧,你QT写个通用程序放到mac,用户能买帐吗.还是你愿意用QT自己实现core animation的手感

4.我从来没说过我懂QT,我一开始就说只是随便看了几天,不过QT和KDE的历史碰巧还是看过的,KDE下用QT,无疑这是最优解.要跨平台,抱歉在当时的环境下我个人找不到用QT的理由,也许现在QT已经今非昔比了,我不懂QT不敢造次

5.Pygtk ruby-shoes当然是玩具,因为他们的底子还是C系语言,但至少pygtk比pyqt完成度更高,用的人也更多,既然是玩具,当然选更方便的玩.但是你要是以为lisp ruby python是玩具,那我只能呵了个呵了. macruby是本地编译,写出来的程序完全等价objc的cocoa程序,为啥这就不是玩具,因为objc就是个劣化版的smalltalk,而ruby是披上smalltalk皮的lisp.你说php写出来的linux内核能等价c写的linux内核吗?而且php写起来并不爽,不然也轮不到ROR造次了.

6.我从来没说GTK好话,一定要比的话GTK更糟糕,我绝对同意QT是这个星球上最优雅的C艹类库,不过很可惜不是我的菜


7.MONO不说了,不懂不乱说
回复

使用道具 举报

发表于 2011-1-22 02:40 | 显示全部楼层
顺便说一下这贴就到这里吧,喜好这种东西谁都无法说服谁,吵来吵去都成抠字眼了,没意思
公开场合灌输自己主观感受确实是我不对在先,蛋饼大大您教训得是
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|上海互联网违法和不良信息举报中心|网上有害信息举报专区|962110 反电信诈骗|举报电话 021-62035905|Stage1st ( 沪ICP备13020230号-1|沪公网安备 31010702007642号 )

GMT+8, 2025-9-17 06:33 , Processed in 0.209802 second(s), 6 queries , Gzip On, Redis On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表