ETH官方钱包

創(chuàng)作內(nèi)容

1 GP

全域變數(shù)的載入時(shí)機(jī)

作者:likwueron│2015-06-22 12:23:31│巴幣:2│人氣:210
在跑qtlua interpreter的互動(dòng)模式時(shí),我發(fā)現(xiàn)在Windows版居然沒有QWidget等Qt提供的元件。
這表示在Windows上它完全沒辦法當(dāng)language binding。
說真的,這很奇怪,所以要開始找原因了。

那些預(yù)設(shè)的Qt元件是透過qtluaqmetaobjecttable.cc定義的。
而具體處理這張表的是定義在qtluaqtlib.cc中的QMetaObjectTable。
這個(gè)類別只有生出一個(gè)檔案變數(shù)。

老實(shí)說我真的看不出來這張表有什麼問題,我只好開除錯(cuò)看看是怎麼一回事。
結(jié)果很奇怪的是,在QMetaObjectTable建構(gòu)的時(shí)候,所有Qt內(nèi)建的staticMetaObject通通取到0x0,也就是在這個(gè)時(shí)間點(diǎn)它們還沒建立。
從另一方面來說,Linux版肯定是相反,所有的staticMetaObject都建立好了。

我只能猜說,QMetaObjectTable在Windows上建立的時(shí)間比Qt完全載入的時(shí)間還早。
所以要做的部份想來也只有:延遲QMetaObjectTable建立的時(shí)間點(diǎn)。
基本上就是改用指標(biāo),然後找一個(gè)可以的時(shí)機(jī)建立它,且設(shè)定好記憶體管理。



下載,內(nèi)含範(fàn)例。原始碼
呃,這包漏了一個(gè)dll,請把其中的platforms資料夾放在和執(zhí)行檔同一個(gè)位置。

注意:因?yàn)楦挠肣t5,所以就沒辦法在XP上面跑了。
雖然說官方有提供編譯指引,但我沒時(shí)間把Qt5整個(gè)重編譯一次。
不過我想現(xiàn)在跑XP的人應(yīng)該很少了吧?好吧,我是說我希望如此。

還有,Qt5要包的東西多很多,大概肥了2.5倍吧?
要弄出基本的圖形介面後面就拖了43MB的DLL,就算壓縮後還是有17MB多。
不過這只是我在抱怨就是了,因?yàn)榫W(wǎng)路太慢,上傳只有10KB/s...



話說,Qamer中有一些全域指標(biāo),搞不好它們之中也會(huì)引發(fā)類似的問題。
回頭把它們處理掉好了,這樣或許會(huì)比較好。
引用網(wǎng)址:http://www.jamesdambrosio.com/TrackBack.php?sn=2874438
Some rights reserved. 姓名標(biāo)示-非商業(yè)性 2.5 臺灣

相關(guān)創(chuàng)作

同標(biāo)籤作品搜尋:Qt|Lua|腳本|全域變數(shù)

留言共 0 篇留言

我要留言提醒:您尚未登入,請先登入再留言

1喜歡★iqandadie 可決定是否刪除您的留言,請勿發(fā)表違反站規(guī)文字。

前一篇:加入物件的成員存取限制... 後一篇:部屬Q(mào)t程式...


face基於日前微軟官方表示 Internet Explorer 不再支援新的網(wǎng)路標(biāo)準(zhǔn),可能無法使用新的應(yīng)用程式來呈現(xiàn)網(wǎng)站內(nèi)容,在瀏覽器支援度及網(wǎng)站安全性的雙重考量下,為了讓巴友們有更好的使用體驗(yàn),巴哈姆特即將於 2019年9月2日 停止支援 Internet Explorer 瀏覽器的頁面呈現(xiàn)和功能。
屆時(shí)建議您使用下述瀏覽器來瀏覽巴哈姆特:
。Google Chrome(推薦)
。Mozilla Firefox
。Microsoft Edge(Windows10以上的作業(yè)系統(tǒng)版本才可使用)

face我們了解您不想看到廣告的心情? 若您願(yuàn)意支持巴哈姆特永續(xù)經(jīng)營,請將 gamer.com.tw 加入廣告阻擋工具的白名單中,謝謝 !【教學(xué)】