2016-05-16 26 views
0

我必須創建一個文件(.exe)程序。 在這個程序中,用戶可以從他的電腦中選擇目錄。如何在靜態編譯中處理GTK中的FileChooser

我按照http://www.tarnyko.net/en/?q=node/31的順序創建程序,它運行良好。

但是當我調用FileChoser(點擊按鈕)我得到這個錯誤Tarnyko的這個問題

GLib-GIO-ERROR No GSettings schemas are installed on the system 

反應是COMENT網頁上 - 這被稱爲「錯誤」與靜態編譯。

我該如何解決這個問題?

一方面我必須有one-file.exe。 另一方面,我真的不想創建「複雜」的FileChooser在我自己...有沒有任何選項來處理這個?

我的想法: 1 - 調用操作系統的本機文件選擇(窗口) 2 - 我自己創建文件選擇器 - 如果不是「多難」的GTK

我不知道該怎麼辦這一點。

對不起復制 - 可能更迭的解決方案是在回答形式「ebassi」這裏GLib-GIO-ERROR**: No GSettings schemas are installed on the system(沒有測試過)

+0

[這是谷歌可以爲你做的事](https://www.google.it/search?q=GLib-GIO-ERROR+No+GSettings+schemas+are+installed+on+the+system&oq= GLib-GIO-ERROR + No + GSettings + schemas +在+系統+ aqs = chrome..69i57j0l5.415j0j7&sourceid = chrome&es_sm = 122&ie = UTF-8上+ +被安裝+) – LPs

+0

顯式不支持靜態編譯GTK +,所以任何「bug 「你看到的是使用不受支持的配置的結果。話雖如此,重新編譯你的靜態GLib讓GSettings不要在文件系統上尋找模式或其他東西。我不確定這是否可能...您可能還需要重新編譯GTK +以將其架構作爲.a文件的一部分嵌入。 – andlabs

+0

@andlabs,你介意提供一個明確不支持的來源嗎?不是因爲我認爲你錯了,但我對這個理由很好奇。 – Blake

回答

1

設置模式(這是在GTK用於不僅僅是文件選擇窗口小部件更多的地方)不能靜態地鏈接成一個二進制文件:它們必須安裝在衆所周知的位置(可通過$XDG_DATA_DIRS環境變量控制),並且必須將它們編譯到緩存中。

像Pango和GDK-Pixbuf一樣,GTK的依賴關係也使用輔助文件和可加載模塊,這些模塊與靜態鏈接不完全兼容(除非您願意花時間在其上)。

通常建議您只爲應用程序提供一個可執行文件,它是一個自解壓安裝程序,其中包含運行GTK應用程序所需的所有已安裝文件,並避免靜態鏈接。