将 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