gpt4 book ai didi

python 调用 c dll 传递给 wchar**

转载 作者:行者123 更新时间:2023-11-28 18:33:23 25 4
gpt4 key购买 nike

我需要更改一些 python 代码以调用如下所示的 c api:

int start_our_service(WCHAR* extra, int numargs, WCHAR** args);

我有这个:

dll = ctypes.WinDLL(__DLL_PATH)
dll.restype = ctypes.c_int32
dll.argtypes = [ctypes.c_char_p, ctypes.c_int, POINTER(POINTER(ctypes.c_char_p))]
data = (ctypes.c_char_p)("-t:9".encode())
ptr = POINTER(ctypes.c_char_p)(data)
dll.start_service("TEST", 2, ctypes.byref(ptr))

除了最后一个 WCHAR** 之外,所有参数都正常通过。我显然遗漏了一些东西但看不到它,有什么想法吗?

python 3/ window

TIA

最佳答案

我认为您试图声明函数参数(顺便说一句,您正在将其分配给 dll 而不是函数)使事情过于复杂。我能想出的最简单的代码量可以完成您似乎打算做的事情:

argvector = ctypes.c_char_p * 2
args = argvector(b"-t=9", b"--verbose")
dll = ctypes.WinDLL(__DLL_PATH)
dll.start_service("TEST", 2, args)

即创建一个指针类型的数组,实例化并传递它。

我还传递了两个参数,而您似乎只传递了一个。

关于python 调用 c dll 传递给 wchar**,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34873792/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com