gpt4 book ai didi

python ctypes 挂

转载 作者:太空宇宙 更新时间:2023-11-04 02:58:52 26 4
gpt4 key购买 nike

我在从 python 调用共享 c 库时遇到问题。库加载正常,公开的 3 个函数之一是可调用的,并且按预期工作;但是,当向库中添加另一个函数时,我发现其他两个不起作用。发生的事情是 python 卡在实际的函数调用上,只是自旋而什么都不做。 python 端和 c 端都有详细的日志记录,我可以看出库中的函数甚至没有启动,因为没有写入任何调试文件。

下面是相关代码的一小段:

这是失败的 C 代码示例函数:

    int genTest(char* filePath)
{
infoPrint(filePath, 2);
return EXIT_SUCCESS;
}

这是我调用它的 python:

    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')

此代码开始编写“测试开始”并挂起。就像我说的,这在 python 代码其他地方的库中的另一个函数上工作正常,python 没有抛出任何错误,所以,我无法调试任何东西。有什么想法吗?

最佳答案

所以,我弄清楚了它失败的原因。对我的 infoPrint 函数的调用中出现了段错误。

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

感谢您帮助克服这个小问题,现在我可以(希望)找出 C 代码出了什么问题。

关于python ctypes 挂,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14347433/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com