将 ctypes args 从 c++ 翻译成 python
Translate ctypes args from c++ to python
我尝试使用 ctypes 在 python 程序上使用 DLL。
这是我想在 python 中使用的 C# 代码和函数参数:
[DllImport("test.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.Cdecl)]
public static extern int function(
byte[] filename,
byte[] name,
IntPtr result,
out IntPtr UnmanagedStringArray,
out int iStringsCountReceiver);
下面的代码是我的python代码。我搜索了几个站点,但找不到有关 argtypes 的提示。
请帮助我在 python.
中使用 DLL
mydll = c.cdll.LoadLibrary("test.dll")
func = mydll['function']
func.argtypes=( ....)
byte[]
等同于 C 中的 char*
,因此 c_char_p
可以工作。 IntPtr
在 C# 中是一个指针大小的整数。 c_void_p
应该可以。 out
参数需要指针。
你可以试试:
import ctypes as c
mydll = c.CDLL('./test')
func = mydll.function
func.argtypes = c.c_char_p,c_c_char_p,c.c_void_p,c.POINTER(c_void_p),c.POINTER(c.c_int)
func.restype = c.c_int
我尝试使用 ctypes 在 python 程序上使用 DLL。
这是我想在 python 中使用的 C# 代码和函数参数:
[DllImport("test.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.Cdecl)]
public static extern int function(
byte[] filename,
byte[] name,
IntPtr result,
out IntPtr UnmanagedStringArray,
out int iStringsCountReceiver);
下面的代码是我的python代码。我搜索了几个站点,但找不到有关 argtypes 的提示。 请帮助我在 python.
中使用 DLLmydll = c.cdll.LoadLibrary("test.dll")
func = mydll['function']
func.argtypes=( ....)
byte[]
等同于 C 中的 char*
,因此 c_char_p
可以工作。 IntPtr
在 C# 中是一个指针大小的整数。 c_void_p
应该可以。 out
参数需要指针。
你可以试试:
import ctypes as c
mydll = c.CDLL('./test')
func = mydll.function
func.argtypes = c.c_char_p,c_c_char_p,c.c_void_p,c.POINTER(c_void_p),c.POINTER(c.c_int)
func.restype = c.c_int