<p>这里有一整套应该有用的定义。注意如何通过创建类型的实例并通过引用传递它来传递输出参数。许多常见的窗口类型也在<code>ctypes.wintypes</code>中定义。在</p>
<p>注意,对于InitNetwork,第一个参数类型是C中的<code>char*</code>,因此您需要<code>c_char_p</code>而不是{<cd4>},并且可以直接传递Python字节字符串,就像C代码不写入指针一样。<code>ctypes.create_string_buffer()</code>可用于在需要时生成可写字符数组。在</p>
<pre><code>from ctypes import *
from ctypes import wintypes as w
dll = WinDLL('path/to/dll')
# BOOL InitNetwork(char LocalIP[],char ServerIP[],int LocalDeviceID)
dll.InitNetwork.argtypes = c_char_p,c_char_p,c_int
dll.InitNetwork.restype = w.BOOL
# BOOL GetOnlineStatus()
dll.GetOnlineStatus.argtypes = None
dll.GetOnlineStatus.restype = w.BOOL
# char* GetMusicSongName(int DirIndex,int SongIndex)
dll.GetMusicSongName.argtypes = c_int,c_int
dll.GetMusicSongName.restype = c_char_p
# int PlayServerMusic(int DirIndex,int MusicIndex,int DeviceCout,PUINT lpDeviceID,int UseListIndex,int UserMusicIndex,UINT TaskCode)
dll.PlayServerMusic.argtypes = c_int,c_int,w.PUINT,c_int,c_int,w.UINT
dll.PlayServerMusic.restype = c_int
dll.InitNetwork(b'1.1.1.1',b'2.2.2.2',7)
status = dll.GetOnlineStatus()
song = dll.GetMusicSongName(1,2)
DeviceCout = w.UINT()
result = dll.PlayServerMusic(1,2,3,byref(DeviceCout),4,5,6)
</code></pre>