【问题标题】:how to pass char pointer as argument in ctypes python如何在ctypes python中将char指针作为参数传递
【发布时间】:2013-09-28 08:20:30
【问题描述】:

请帮助我将下面的 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;

【问题讨论】:

  • 投了这么多票,但没有任何有用的解释为什么......
  • 但是,我猜这是因为您似乎只是想让其他人为您做一些编码工作;你可能最好花点时间学习 ctypes,如果你自己还不能处理,你可以回到这里,也许有一个更具体的问题。
  • 这是一个有效的问题。 OP应该提供更多背景。我赞成反对,。

标签: python char ctypes


【解决方案1】:

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

【讨论】:

  • 非常感谢.....我使用的是 byref(handle) 而不是 ctypes.byref(handle).......
  • 不客气...如果这篇文章回答了你的问题,你可以接受它作为点击帖子旁边的检查的答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-15
  • 2020-08-01
  • 1970-01-01
相关资源
最近更新 更多