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 ビット) と 2 つの double (64 ビット) => 20 バイトを取ります。

OziAPIただし、実装言語が定義されていない限り、これは経験に基づいた推測にすぎません。

于 2012-07-25T13:35:43.243 に答える