我正在尝试从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)我哪里错了,请帮帮忙
发布于 2012-07-25 21:35:43
我不确定,function oziRepositionWP(Number:integer;lat,lon:double):integer;stdcall;到底是什么语言。是Delphi吗?无论如何,签名看起来像是通过值接受所有参数;然而,在实际调用中,所有值都是通过引用传递的。假设您在32位中工作,您正在传递3个指针值(每个32位=> 12字节),但是该函数接受一个整数(32位)和两个双精度(64位) => 20字节。
但是,只要没有定义OziAPI的实现语言,这只是一个有根据的猜测。
https://stackoverflow.com/questions/11650867
复制相似问题