How deal with FileChooser in GTK with static compilation

99封情书 提交于 2019-12-25 06:59:59

问题


I have to create one-file (.exe) program. In this program user can choose directory from his computer.

I create program in order of http://www.tarnyko.net/en/?q=node/31 and it run well.

But when I invoke FileChoser (click on button) I got this error

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

Response of Tarnyko to this issue is in coment on webpage - this is known "bug" with static compiling.

How can I work around this?

On the one hand I have to have one-file.exe. On the other hand I realy do not want create "sophisticated" FileChooser on my own... is there any option to deal with this?

My ideas: 1 - Call native File chooser of OS (windows) 2 - Create file chooser on my own - if it is not "much hard" in gtk

I do not know how to do either of this.

Sorry for duplicating - probably succes solution is in answer form "ebassi" here GLib-GIO-ERROR**: No GSettings schemas are installed on the system (not tested yet)


回答1:


Settings schemas (which are used in GTK in more places than just the file selector widget) cannot be statically linked into a binary: they have to be installed in a well known location (controllable via the $XDG_DATA_DIRS environment variable) and they have to be compiled into a cache.

GTK's dependencies like Pango and GDK-Pixbuf also use ancillary files and loadable modules that are not strictly compatible (unless you're willing to spend time on it) with static linking.

The usual recommendation for only providing a single executable for your application is to have a self-extracting installer that contains all the installed files necessary to running a GTK application, and avoid static linking.




回答2:


I don't think it's possible to create just one .exe file (without any other files) with GTK+. Maybe only when you recode the GTK and it's dependencies - which is not an easy task to do.

The best solution I found is to put all schemas (and also icons for your GTK+ app) in the same location where your .exe file is placed:

EXE_LOCATION\program.exe

// For icons:
EXE_LOCATION\share\icons\hicolor...

// For schemas
EXE_LOCATION\share\glib-2.0\schemas

Then you deliver these files together with your .exe file and with all needed .dll files.

About the native file chooser in GTK+: It also needs the schemas - at least on Windows OS.



来源:https://stackoverflow.com/questions/37257778/how-deal-with-filechooser-in-gtk-with-static-compilation

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!