标签: glib

尝试导入模块:未定义的符号:PyUnicodeUCS4_DecodeUTF8

导入glib失败:

ImportError: /usr/lib/python2.7/dist-packages/glib/_glib.so: undefined symbol: PyUnicodeUCS4_DecodeUTF8

我怎样才能解决这个问题?

Python版本是Python 2.7.3rc2.操作系统是Debian.

python linux glib

14
推荐指数
1
解决办法
2万
查看次数

如何使用MinGW运行./configure?

我在看这个网页

http://mathieu.carbou.free.fr/wiki/index.php?title=Glib_for_Win32

它告诉我,我需要运行以下命令.

./configure
make
make install
Run Code Online (Sandbox Code Playgroud)

我如何实际执行此操作以及在何处可以找到这些文件.我在我的C盘中安装了MinGW和Mysys.

mingw glib

14
推荐指数
1
解决办法
2万
查看次数

用Popen模仿glib.spawn_async ...

该功能glib.spawn_async允许你勾3个回调这是所谓的事件上stdout,stderr以及在过程中完成.

如何使用线程或asyncio 模拟进程的相同功能?

我对功能而不是线程/ asynio更感兴趣,但包含两者的答案将获得赏金.

这是一个玩具程序,显示我想要做的事情:

import glib
import logging
import os
import gtk


class MySpawn(object):
    def __init__(self):
        self._logger = logging.getLogger(self.__class__.__name__)

    def execute(self, cmd, on_done, on_stdout, on_stderr):
        self.pid, self.idin, self.idout, self.iderr = \
            glib.spawn_async(cmd,
                             flags=glib.SPAWN_DO_NOT_REAP_CHILD,
                             standard_output=True,
                             standard_error=True)
        fout = os.fdopen(self.idout, "r")
        ferr = os.fdopen(self.iderr, "r")
        glib.child_watch_add(self.pid, on_done)
        glib.io_add_watch(fout, glib.IO_IN, on_stdout)
        glib.io_add_watch(ferr, glib.IO_IN, on_stderr)
        return self.pid


if __name__ == '__main__':
    logging.basicConfig(format='%(thread)d %(levelname)s:  %(message)s',
                        level=logging.DEBUG)
    cmd = '/usr/bin/git ls-remote https://github.com/DiffSK/configobj'.split()

    def on_done(pid, retval, *args): …
Run Code Online (Sandbox Code Playgroud)

python gtk multithreading glib python-asyncio

14
推荐指数
1
解决办法
213
查看次数

为什么GLib重新定义类型?

在GLib中重新定义类型背后的原因是什么?为什么他们转chargchar,intgint,等?

c types glib

13
推荐指数
1
解决办法
1014
查看次数

GTK:取消超时

GTK允许您设置超时g_timeout_add.就像g_signal_connect,g_timeout_add函数返回一个表示超时的id.那么,有没有办法使用id 取消超时?通过文档查看,我没有看到任何取消超时事件的方法,但我认为必须有一些方法,否则id返回值的重点是g_timeout_add什么?

那么,有没有办法取消超时事件,或者这只是需要通过设置"取消标志"手动处理的东西,可以在用户提供的超时处理函数中进行检查?

gtk glib

13
推荐指数
1
解决办法
7103
查看次数

运行多个并发GMainLoops

是否允许GLib用户GMainLoop在多个线程中并发运行多个实例,每个线程都运行自己的实例?我发现整个地方都有"是"和"否"的答案.我意识到这个问题之前已经在这个论坛(2011年12月)中被提出过.

但是,我能够GMainLoop在没有明显问题的情况下同时运行两个实例.我的测试代码非常简单:

  1. 创建GMainLoopmain()
  2. 使用默认上下文和主循环创建超时源 g_timeout_add
  3. 在main()中创建一个GThread
  4. 使用运行主循环 g_main_loop_run
  5. [THREAD CONTEXT]:使用创建上下文 g_main_context_new
  6. [THREAD CONTEXT]:将该上下文设置为线程默认使用 g_main_context_push_thread_default
  7. [THREAD CONTEXT]:使用创建循环g_main_loop_new并为其提供新的上下文
  8. [THREAD CONTEXT]:创建一个超时源,并通过它将其附加到新的上下文 g_source_attach.
  9. [THREAD_CONTEXT]:让线程调用 g_main_loop_run

这样做,我看到两个GMainLoop工作的实例都很好.正确调用超时回调,稍后对g_main_loop_quit的调用按预期工作.

因此,让多个GMainLoop实例同时工作似乎不是问题.但也许我还没有充分运用API来完全掌握这种情况.这个问题有明确的答案吗?

另外,如果有人关心的话,这是实际的测试代码:

#define THREAD_TIMEOUTS (20)
#define MAIN_TIMEOUS (1)

typedef struct timeout_struct
{
    int i;
    int max;
    GMainLoop *loop;
    char *name;

} TIMEOUT_STRUCT;

gboolean timeout_callback(gpointer data)
{
    TIMEOUT_STRUCT *psTimeout = (TIMEOUT_STRUCT *)data;

    psTimeout->i++;

    if (psTimeout->i == psTimeout->max)
    {
        if (psTimeout->max == THREAD_TIMEOUTS)
        { …
Run Code Online (Sandbox Code Playgroud)

c multithreading glib

13
推荐指数
1
解决办法
6879
查看次数

重新分配智能指针

一般来说做智能指针,如std::unique_ptrGlib::RefPtr当另一个对象重新分配给点删除他们的对象,因为他们持有的是给定的对象(在的情况下,显然隐含的唯一指针std::unique_ptr)?

c++ smart-pointers glib gtkmm c++11

13
推荐指数
2
解决办法
4598
查看次数

如何使用MinGW编译和使用GLib

我想在Windows环境中使用Gnome GLib,使用免费的MinGW编译器在C中进行开发.问题是,我完全不知道如何编译这个库.您是否有人请说明完成此操作所需的工具以及需要遵循的说明?

windows glib mingw32

12
推荐指数
2
解决办法
2万
查看次数

GLib的GAsyncQueue与POSIX message_queue

有没有人知道GLib的GAsyncQueue与POSIX message_queue相对于线程间通信的相对性能?我将有许多小消息(单向和请求 - 响应类型),在Linux上用C实现(现在;可能稍后移植到Windows).我正在尝试决定使用哪一个.

我发现使用GLib更便于携带,但POSIX mq具有能够选择或轮询它们的优点.

但是,我没有找到有关其性能更好的任何信息.

performance posix ipc glib message-queue

12
推荐指数
1
解决办法
2311
查看次数

安装Sharp /usr/include/vips/vips8:35:25: 致命错误:glib-object.h

我正在尝试在 Ubuntu 16.04 LTS 上安装Sharp。

我原本没有vips,所以我安装了

    sudo apt-get install libvips-dev
Run Code Online (Sandbox Code Playgroud)

这修复了第一个错误,但现在我遇到了另一个错误:

    In file included from ../src/common.cc:25:0: 
    /usr/include/vips/vips8:35:25: fatal error: glib-object.h: No such file or directory
    compilation terminated.
    sharp.target.mk:115: recipe for target 'Release/obj.target/sharp/src/common.o' failed
    make: *** [Release/obj.target/sharp/src/common.o] Error 1
    make: Leaving directory '/home/rachel/node_modules/sharp/build'
    gyp ERR! build error
    gyp ERR! stack Error: `make` failed with exit code: 2
    gyp ERR! stack   at ChildProcess.onExit (/usr/share/node-gyp/lib/build.js:269:23)
    gyp ERR! stack     at emitTwo (events.js:87:13)
    gyp ERR! stack     at ChildProcess.emit (events.js:172:7)
    gyp ERR! stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:200:12) …
Run Code Online (Sandbox Code Playgroud)

ubuntu glib npm vips sharp

12
推荐指数
1
解决办法
6690
查看次数