如何在ctypes python中将char指针作为参数传递

7

请帮我将以下C++代码转换为ctypes Python:

Ret = openFcn(&Handle, "C:\\Config.xml");

以下是每个声明的内容:
typedef uint16_t (* OpenDLLFcnP)(void **, const char *);
OpenDLLFcnP openFcn = NULL;
openFcn = (OpenDLLFcnP) myLibrary.resolve("Open");
void *Handle = NULL;

8
许多人给出了负面评价,但并没有解释为什么会这样... - Erik Kaplun
然而,我猜想原因可能是因为你似乎只是想让他人为你完成一些编码工作;你最好花些时间学习ctypes,如果你仍无法自行处理,可以回来这里,也许带着一个更具体的问题。 - Erik Kaplun
这是一个合理的问题。OP应该提供更多的背景信息。我点赞以抵消。 - user391339
1个回答

5

myLibrary.resolve未定义,但您需要的一般代码(未经测试)如下:

import ctypes
dll = ctypes.CDLL('your.dll')
Open = dll.Open
Open.argtypes = [ctypes.POINTER(ctypes.c_void_p),ctypes.c_char_p]
Open.restype = ctypes.c_uint16
Handle = ctypes.c_void_p()
result = Open(ctypes.byref(Handle),'c:\\Config.xml')

这假设你有一个名为 your.dll 的 DLL 文件,其中包含一个名为 Open 的函数需要调用。

1
非常感谢,我之前使用的是 byref(handle) 而不是 ctypes.byref(handle)。 - Naveen kumar Katta rathanaiah
如果这篇文章回答了你的问题,欢迎接受它并点击旁边的勾选框作为答案。 - Mark Tolonen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接