首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python ctype挂起

python ctype挂起
EN

Stack Overflow用户
提问于 2013-01-16 05:39:07
回答 1查看 996关注 0票数 1

我在从python调用一个共享的c库时遇到了问题。库加载正常,3个公开的函数中有一个是可调用的,并且可以按预期工作;但是,当向库中添加另一个函数时,我发现其他两个函数无法工作。发生的情况是python挂起了实际的函数调用,并在什么也不做的情况下旋转。python端和c端都有详细的日志记录,我可以断定库中的函数甚至没有启动,因为没有编写调试文件。

下面是有问题的代码的一小段:

下面是失败的c代码示例函数:

代码语言:javascript
复制
    int genTest(char* filePath)
    {
       infoPrint(filePath, 2);
       return EXIT_SUCCESS;
    }

这是我用来调用它的python:

代码语言:javascript
复制
    import ctypes as C

    lg.create_log_entry('loading dll... from ' + str(lib_path) + str(lib_name))
    myclib = C.CDLL(lib_path + lib_name)

    lg.create_log_entry('loaded')

    genTest = myclib.genTest

    genTest.argtypes = [C.c_char_p]
    genTest.restype = C.c_int

    lg.create_log_entry('test start')
    res = genTest(C.c_char_p(str(source_as_image)))
    certirxlogging.create_log_entry('test successful')

这段代码开始编写“test start”,然后挂起。正如我所说的,这在python代码中库中其他地方的另一个函数上工作得很好,并且python没有抛给我任何错误,所以我无法调试任何东西。有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-01-17 00:07:38

所以,我找到了它失败的原因。在对infoPrint函数的调用中有一些东西抛出了一个段错误。

导致我的程序挂起的原因是我正在使用python的多处理库在一个单独的进程中运行这个函数,并通过管道与它通信。父进程正在使用超时轮询管道,以获取由于突然崩溃而从未出现的返回值。

感谢你帮助我克服了这个小小的障碍,现在我可以(希望)找出c代码的问题所在。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14347433

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档