'PyCObject_Import(“cairo”,“CAPI”)“C++调用产生段错误,”import Cai
'PyCObject_Import("cairo", "CAPI")' C++ call yields segfault, 'import cairo' on python works
我正在运行OSX Lion并尝试使用python2.7为goocanvas导入python模块。
我设法成功编译了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")
导入"开罗"库时,会发生段错误。但是,如果我尝试通过 python2.7 控制台直接导入开罗模块 import cairo
,它可以工作。
我应该怎么做?我有一个盲目的 seg 错误,不知道为什么会发生这种情况。记得我设法编译了python goocanvas模块,但是在尝试将其导入python时出现段错误。
您使用的是哪种类型的控制台?我认为 gtk/glib 有一些钩子可以与 REPL 同时运行主循环。这意味着线程正在使用中,如果未调用 glib.threads_init(),可能会导致崩溃。
恕我直言,这是设计破坏的,因为通过仅导入 glib 或任何 g* 模块,使用任何线程的理智 Python 程序将突然开始段错误。支持线程应该是默认值。
在我们的例子中,崩溃是由glib的日志记录系统引起的,该系统在没有持有GIL的情况下转发到Python。
相关文章:
- 编写代码时C++出现错误:错误 1 错误 C2601:'circle':本地函数定义是非法的
- 如何摆脱C ++中的分段错误错误?
- Clang 8 带有静态 constexpr 和数组的链接器错误 - 错误是什么以及如何解决它?
- 为什么每当我尝试运行此链接列表删除功能时都会收到分段错误错误?
- 如何解决分段错误错误C++
- 作为参数模板的模板类:MSVC 错误 - 错误 C2977:模板参数过多 (C++98)
- 安卓工作室 |CPP 文件错误错误: 位图库中对"AndroidBitmap_unlockPixels"的未定义引用
- 卷曲给出分段错误错误
- 无法访问 Arduino 结构字段。错误"退出状态 1。xxxx 不命名类型"
- 错误错误 C2872:"布尔值":kinect.h 的不明确符号
- C++打印模板容器错误(错误:"运算符<<"的不明确重载)理解?
- 结构的分割错误错误
- 为什么此代码返回分段错误错误?
- 错误错误:无法编译内置功能
- 分段错误错误C++
- C++ 1Z 错误:错误:演绎指南中声明中的显式限定
- 使用对数据类型的向量的哈希表中的分段错误错误
- 为什么此代码会导致分段错误错误
- JNA结构字段值错误
- C++段故障错误