我一直在研究python-mpdor的源代码,它提到它是
基于gobject,用于简单的事件处理(在高级客户端类中).
有人可以用简单的语言向我解释究竟是什么Glib,GObject以及它们如何相互作用以及它在事件处理中扮演什么角色.
我试着寻找Glib,GObject但我没有找到任何基本的解释.我发现的所有解释都非常技术性和技术性,我的意思是不适合初学者.
此外,有人可以指向一些关于和的初学者教程/文章.GlibGObject
是否有一个既定的方法嵌入的gettext locale/xy/LC_MESSAGES/*在PYZ捆绑?特别是让Gtks自动小部件翻译从 ZIP存档中获取它们.
对于其他嵌入式资源pkgutil.get_deta或inspect/ get_source工作得足够好.但系统和 Python gettext API依赖于bindtextdomain提供一个简单的旧localedir; 没有资源或字符串等
所以我无法设计一个可行的甚至是远程实用的解决方法:
虚拟gvfs/ gio路径
现在使用archive://file%3A%2F%2Fmypkg.pyz%2Fmessages%2FIRI可以直接从zip读取其他文件.但是glibs g_dgettext仍然只是系统库的一个薄包装器.因此,任何此类URL都不能用作localedir.
部分提取拉链
这就是我认为PyInstaller的工作方式.但是将.pyz应用程序捆绑在一起当然有点荒谬,只是在每次调用时都预先提取.
Userland gettext .mo/ .poextraction
现在手动读取消息目录或者只是使用普通的dicts来代替它.但仅适用于应用程序中的字符串.再也没办法让Gtk/GtkBuilder暗中接他们了.
因此,我不得不手动遍历整个小部件树,标签,文本,内部小部件,markup_text等.可能,但是meh.
FUSE安装
这将是超薄的.但是当然,拉链内容可以被访问gvfs-mount等等.就好像是某种记忆力.而且我怀疑它会保持可靠性,例如两个应用程序实例正在运行,或者之前的不正确终止.(就像dunno一样,由于系统库,比如gettext,在一个脆弱的拉链保险丝点上磕磕绊绊......)
用于翻译的Gtk信号/事件(?)
我发现蹲下了,所以我有点确定在Gtk/PyGtk/GI中没有替代机制来进行小部件翻译.Gtk/Builder期望并与 gettext相关联.
是否有更可靠的方法?
我尝试安装udev.而udev在这期间给了我一个错误./configure
--exists: command not found configure: error:
pkg-config and "glib-2.0 >= 2.16" not found, please set GLIB_CFLAGS and GLIB_LIBS
to the correct values or pass --with-internal-glib to configure
Run Code Online (Sandbox Code Playgroud)
好的,缺少pkg-config和glib-2.0.
起初我尝试安装pkg-config.我收到了这条消息:
checking whether to list both direct and indirect dependencies... no
checking for Win32... no
checking if internal glib should be used... no
checking for pkg-config... no
./configure: line 13557: --exists: command not found
configure: error: pkg-config and "glib-2.0 >= 2.16" not found,
please set GLIB_CFLAGS and GLIB_LIBS to the …Run Code Online (Sandbox Code Playgroud) 我正在使用许多glib数据结构(GHashTable,GSList等)开发库.我一直在使用valgrind经常检查我的代码是否有内存泄漏.valgrind指出的大多数问题很容易解决,但有一些我无法弄清楚.
所有这些都被报道为"可能丢失".
在valgrind stacktrace的顶部,我总能找到相同的4个库:
==29997== 1,512 bytes in 3 blocks are possibly lost in loss record 24 of 25
==29997== at 0x4004B11: memalign (vg_replace_malloc.c:532)
==29997== by 0x4004B6B: posix_memalign (vg_replace_malloc.c:660)
==29997== by 0x5E9AC4: ??? (in /lib/libglib-2.0.so.0.1200.3)
==29997== by 0x5EA4FE: g_slice_alloc (in /lib/libglib-2.0.so.0.1200.3)
Run Code Online (Sandbox Code Playgroud)
在调用堆栈中,总是调用glib函数,例如g_key_file_new(),g_slist_prepend(),g_strsplit(),g_key_file_load_from_file(),g_file_get_contents().
我的问题是:
有没有人遇到这个并找到了解决方法?
或者这是我可以忽略的东西?是否由于glib使用内存池,如此处所示?
我在用
在我没有编写的大量代码中的某处(但我正在尝试调试),GLib库中的断言失败:
(process:31987): GLib-CRITICAL **: g_hash_table_lookup: assertion `hash_table != NULL' failed
Run Code Online (Sandbox Code Playgroud)
但是,GDB和代码仍在继续.我希望GDB能够打破这个断言失败的地方,这样我才能找出它失败的原因.我没有得到关于这个断言在哪里的更多信息.有没有办法让GDB在这样的失败中打破?
我有一些业余爱好C编程项目,我想开始.我正在寻找一个拥有自由许可证的开源库(我想要信用,但几乎任何人都可以使用).库需要比C标准库和一些可移植的线程原语更好的字符串.
当我在 Python3 和 Mac OS 上启动 Flask 应用程序时,遇到此错误:
OSError:无法加载库“gobject-2.0-0”:dlopen(gobject-2.0-0, 2):找不到图像。此外,ctypes.util.find_library() 无法找到名为“gobject-2.0-0”的库
我weasyprint在我的项目中使用它导致了这个问题。
我尝试安装glib,它已安装在我的系统中。
我正在cabal install glib-0.12.3使用cabal-install 0.10.2在我的Ubuntu 11.10下尝试.但是,它显示以下错误消息:
setup: The program gtk2hsC2hs version >=0.13.5 is required but the version
found at /usr/bin/gtk2hsC2hs is version 0.13.4
cabal: Error: some packages failed to install:
glib-0.12.3 failed during the configure step. The exception was:
ExitFailure 1
Run Code Online (Sandbox Code Playgroud)
经过半个小时的搜索,我无法找到它的gtk2hsC2hs位置.我挖到像http://code.haskell.org/gtk2hs/tools/c2hs/这样的地方,但似乎找不到合适的版本.
我怎么能升级我的gtk2hsC2hs?谢谢!
可能重复:
为什么glib重新定义类型?
在GTK + 2.0教程中,我可以在这里阅读以下关于数据类型的声明:
在前面的示例中您可能会注意到一些需要解释的事情.您看到的gint,gchar等分别是int和char的typedef,它们是GLib系统的一部分.这样做是为了在进行计算时绕过对简单数据类型大小的讨厌依赖.
我不明白这个解释的最后部分.为什么使用Glib数据类型会更好?
我正在尝试学习如何使用带有C绑定的D-Bus.我以前从未使用过D-Bus.我正在学习本教程,我认为这是官方教程(Freedesktop.org).我已经读过它,直到这个段落给出了第一个示例程序,但不幸的是我在这个页面上没有看到任何关于如何编译它或包含哪些库的指示.我错过了什么 ?
我的操作系统是Ubuntu 10.04 32bit.我安装了libdbus-glib-1-dev包.我试图#include <dbus/dbus.h>在源文件的开头添加,并使用
$ gcc -ldbus-1 -I/usr/include/dbus-1.0/ -I/usr/lib/i386-linux-gnu/dbus-1.0/include -o my_dbus.bin my_dbus.c
Run Code Online (Sandbox Code Playgroud)
但我一直都在失败:
my_dbus.c: In function ‘main’:
my_dbus.c:7:3: error: unknown type name ‘DBusGConnection’
my_dbus.c:8:3: error: unknown type name ‘GError’
...
Run Code Online (Sandbox Code Playgroud)
我是否错过了教程中的一点?不,你能帮我编译这段代码吗?
提前致谢.