C函数执行到哪里停止

Where does C function execution stop

在我的项目文件夹中:

libtest.so
test.h

我已经在我的 python 代码中导入了 ctypes(不确定是否有必要)并且我加载了 .so 文件,如下所示:

lib = cdll.LoadLibrary('./libtest.so')

在"test.h" C头文件中我有:

long TEST_API test( 
                        ___OUT_ char text[41],
                        ___OUT_ char* pcReceiptSignature,

                        );

我从 python 代码调用“test”,如下所示:

class StructA(Structure):
    _fields_ = [("text", c_char*41),
                 ("pcReceiptSignature",c_char*1),
                ]



sampleStruct = StructA("","")

def test2():

    res = lib.test(sampleStruct.text,                               sampleStruct.pcReceiptSignature)
return res

但是某处执行失败,我从来没有到达“return res”行。

对于在结构化中定义的 c_chars 指定的长度,我也尝试不给它们指定长度(没有变化)。

我在这里做错了什么。反正有没有看到执行失败的地方?

你真的应该 运行 调试器下的代码,用 -g 编译 .so 等等

但是您原始代码中的一个明显错误是 char* pcReceiptSignature 被声明为 out 参数?因此我想你想为它保留一些 space ,由函数填充,但是 none 可用(你使用的是 c_char_p 而不是数组!)。 pcRpcReceiptSignature 是指向常量字符串 "" 的指针,因此覆盖它不是很安全。