0

我正在尝试从 DLL 调用函数

function oziRepositionWP(Number:integer;lat,lon:double):integer;stdcall;

我已经用python编写了代码

no = c_int(1)
lat = c_double(34.00962)
lon = c_double(74.80067)

var =windll.OziAPI.oziRepositionWP(byref(no),byref(lat),byref(lon))

但我得到了消息

var =windll.OziAPI.oziRepositionWP(byref(no),byref(lat),byref(lon))
ValueError: Procedure probably called with not enough arguments (8 bytes missing)

我哪里错了请帮忙

4

1 回答 1

0

我不确定,function oziRepositionWP(Number:integer;lat,lon:double):integer;stdcall;实际上是什么语言。是德尔福吗?无论如何,签名看起来像是按值接受所有参数;但是,在您的实际调用中,所有值都是通过引用传递的。假设您在 32 位中工作,您正在传递 3 个指针值(每个 32 位 => 12 个字节),但该函数需要一个整数(32 位)和两个双精度数(64 位)=> 20 个字节。

然而,这只是一个有根据的猜测,只要OziAPI没有定义的实现语言。

于 2012-07-25T13:35:43.243 回答