minigui5.0.2移植到mips平臺多程式模式執行mginit:Can not create task bar

@SC@發表於2020-12-18

在網上找了一下此問題的解決方法,只有在ubuntu系統上面的解決方法,ldd mginit(此方法在ubuntu上面確實可用),但是在交叉編譯工具鏈上面就不行了。。。
於是乎,直接看程式碼了,看到底在哪個地方返回了HWND_INVALID,通過加列印的方式,找到了CreateMainWindowEx2建立視窗的函式中:
在這裡插入圖片描述
此處傳送了MSG_CREATE的訊息之後出錯了,先不管裡面的實現,把goto err去掉,再重新編譯libminigui,替換相應的procs的庫,在此執行mginit好,這個錯誤消失了。出現了另外的一個錯誤,Out of memory,free看一下目前記憶體大小,才用了2M多,還剩下大約70M記憶體,他不可能使用這麼多的記憶體,於是一路追下去(由於要使用到雙buffer,real buffer,shadow buffer),此錯誤是在使能了compositing之後才出現的,所以找到相應部分程式碼,fbvideo.c檔案中,在相關地方加列印(Out of memory實際上是一個巨集,由於使用到的地方比較多,我們就在幾個地方加列印,看出現的位置),最終找到了__mg_create_anonymous_file(此函式用來建立共享記憶體,程式間通訊用的),
在這裡插入圖片描述獲取環境變數這個地方。。。我沒設定這個環境變數,於是乎,果斷設定,export MG_RUNTIME_TMPDIR=你自己隨便找一個能寫檔案的目錄。再次執行,完美,沒錯誤。接著執行自己的測試程式,可以正常顯示。

在此記錄一下。。。(加油,沒有的東西,就自己創造,自己解決)

相關文章