我有如下C函数:的交流功能CTYPE返回类型
char* hash_id_G1(char *str){
char hash[20];
...
return hash;
}
我需要的是像这里的一个部分功能,将采取在字符数组,并返回一个字符数组或指针到字符。
我将这些编译成共享,然后使用ctypes将其导入到python中。
这是我迄今所做的:
from ctypes import *
ibc = cdll.LoadLibrary('./libibc.so.1.0.1')
strin = 'sometext to hash'
ids = (c_char * 40)()
ids.value = strin
hash = c_char_p
hash_id = ibc.hash_id_G1
hash_id.restype = c_char_p
hash = hash_id(ids)
图书馆做得很好,但我不能够设置restype。当我这样做时,代码崩溃了seg故障。
我需要从python中逐一调用c库中的函数。这些函数通常会返回加密。我怎样才能定义这些函数,以便他们接受来自ctype接口的字符串并以某种可存储形式返回加密?
任何帮助表示赞赏。我用C指针和相关的东西很弱。在此先感谢
UPDATE
段故障是因为编译错误。如果函数返回一个无符号字符,我将如何在C中声明ctype变量?
hash_id_G1()函数返回什么?它是以空字符结尾的字符串还是固定的已知大小的字符串?在后一种情况下,您需要将restype声明为'POINTER(c_char * 40)'。 – 2013-03-04 09:00:48
我已更新代码@armin。如图所示,它返回指向char数组的指针。 – Ajoy 2013-03-04 09:41:47
看起来分割问题是由于编译时一些不好的选项造成的。该代码产生预期的结果。我已更新我的帖子。 – Ajoy 2013-03-04 10:00:57