【发布时间】:2013-04-02 13:09:11
【问题描述】:
我有在 Delphi 中构建的 dll,我尝试从中调用函数。函数声明如下:
function GetUid(UID:Pointer):Integer; stdcall;
这相当于这个 C 函数签名:
int GetUID(void *pointer);
使用 ctypes 处理的库:
from ctypes import *
lib = cdll.LoadLibrary("mylib.dll")
但我卡在这里:
res = lib.GetUid(?)
我需要在这个函数中传递什么? 指针是void *,但是如何在python中正确地做到这一点?
【问题讨论】:
-
如果我是你,我会使用
c_void_p。 -
你需要展示
GetUID的实现。返回值可能表示成功或其他。UID参数可能意味着指向调用者声明的UID数据类型。但是没有代码我们怎么知道呢? -
@TLama Er,但你要指出什么?无论如何,
byref()的可能性更大 -
使用
windll代替cdll来匹配stdcall调用约定。 -
你应该传递给函数的 DLL 文档 say 是什么?首先弄清楚这一点,然后然后担心如何在 Python 中表示指向此类事物的指针。