python
调用
dll
方法
在
python
中调用
dll
文件中的接口比较简单,实例代码如下:
如我们有一个
test.dll
文件,内部定义如下:
extern "C"
{
int __
stdcall
test( void* p, int len)
{
return len;
}
}
在
python
中我们可以用以下两种方式载入
1.
import ctypes
dll = ctypes.
windll
.LoadLibrary( 'test.dll' )
2.
import ctypes
dll = ctypes.
WinDll
( 'test.dll' )
其中
ctypes.windll
为
ctypes.WinDll
类的一个对象,已经在
ctypes
模块中定义
好的。在
test.dll
中有
test
接口,可直接用
dll
调用即可
nRst = dll.test( )
print nRst
由于在
test
这个接口中需要传递两个参数,一个是
void
类型的指针,它指向一
个缓冲区。一个是该缓冲区的长度。因此我们要获取到
python
中的字符串的指
针和长度
#
方法一:
sBuf = 'aaaaaaaaaabbbbbbbbbbbbbb'
pStr = ctypes.c_char_p( )
pStr.value = sBuf
pVoid = ctypes.cast( pStr, ctypes.c_void_p ).value
nRst = dll.test( pVoid, len( pStr.value) )
#
方法二:
test
= dll.test
test.argtypes = [ctypes.c_char_p, ctypes.c_int]
test.restypes = ctypes.c_int