我在DLL中有一个C函数,看起来像这样。
/home/(user name)/Android/Sdk
当通话成功时,会将某些内容保存到所有OUT参数中。
使用python ctypes(在Windows上)我想双重取消引用**回复指针,看看那里有什么值。
感谢Adv。
答案 0 :(得分:3)
我没有Format
和Bool
类型,所以在某些替换中,这里有一些示例DLL代码:
#include <stddef.h>
__declspec(dllexport) void ProcessAndsend(char *out, // IN
char const *reqp, // IN
size_t reqLen, // IN
int *Status, // OUT
char const **reply, // OUT
size_t *resLen) // OUT
{
*Status = 1;
*reply = "test";
*resLen = 5;
}
这将检索输出数据。只需创建一些正确的ctypes类型的实例,并通过引用传递它们:
>>> from ctypes import *
>>> dll = CDLL('your.dll')
>>> f = dll.ProcessAndsend
>>> f.argtypes = c_char_p,c_char_p,c_size_t,POINTER(c_int),POINTER(c_char_p),POINTER(c_size_t)
>>> f.restype = None
>>> status = c_int()
>>> reply = c_char_p()
>>> size = c_size_t()
>>> f('abc','def',3,byref(status),byref(reply),byref(size))
>>> status
c_long(1)
>>> reply
c_char_p('test')
>>> size
c_ulong(5L)