- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在运行 OSX Lion 并尝试为 goocanvas 导入 python 模块, 使用 python2.7.
我设法成功编译了 pygoocanvas-0.14.1,但是当我尝试通过 python2.7 控制台import goocanvas
时,出现段错误。经过一些调试后,我得到了这段代码:
DL_EXPORT (void)
initgoocanvas (void)
{
PyObject *m, *d;
fprintf(stderr,"init<< \n");
// Pycairo_IMPORT; // XXX removed, it expands to the line below, anyways
Pycairo_CAPI = (Pycairo_CAPI_t*) PyCObject_Import("cairo", "CAPI"); // ADDED XXX
fprintf(stderr,"after import<< \n");
if (Pycairo_CAPI == NULL) {
return;
}
我发现当 goocanvas python 模块的 C++ 代码试图通过 PyCObject_Import("cairo", "CAPI")
导入“cairo”库时会发生段错误。但是,如果我尝试通过 import cairo
直接通过 python2.7 控制台导入 cairo 模块,它会起作用。
我应该如何进行?我有一个盲段错误,不知道为什么会发生。记得我设法编译了 python goocanvas 模块,但在尝试将其导入 python 时出现段错误。
最佳答案
您使用的是哪种控制台?我认为 gtk/glib 有一些钩子(Hook)可以让主循环与 REPL 同时运行。这意味着线程正在使用中,如果未调用 glib.threads_init() 可能会导致崩溃。
恕我直言,这是设计使然,因为只要导入 glib 或任何 g* 模块,使用任何线程的理智 Python 程序就会突然开始出现段错误。支持线程应该是默认的。
在我们的案例中,崩溃是由 glib 的日志系统引起的,它在没有持有 GIL 的情况下转发给 Python。
关于c++ - 'PyCObject_Import ("cairo", "CAPI")' C++ call yields segfault, ' import cairo' 在 python 上有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11366852/
我正在运行 OSX Lion 并尝试为 goocanvas 导入 python 模块, 使用 python2.7. 我设法成功编译了 pygoocanvas-0.14.1,但是当我尝试通过 pytho
我是一名优秀的程序员,十分优秀!