ctypes の使用に問題がある
次のインターフェースを持つtestdllがあります
extern "C"
{
// Returns a + b
double Add(double a, double b);
// Returns a - b
double Subtract(double a, double b);
// Returns a * b
double Multiply(double a, double b);
// Returns a / b
double Divide(double a, double b);
}
私は .def ファイルも持っているので、「本当の」名前を持っています
LIBRARY "MathFuncsDll"
EXPORTS
Add
Subtract
Multiply
Divide
ctype を介して dll から関数を読み込んでアクセスできますが、パラメーターを渡すことができません。Python の出力を参照してください。
>>> from ctypes import *
>>> x=windll.MathFuncsDll
>>> x
<WinDLL 'MathFuncsDll', handle 560000 at 29e1710>
>>> a=c_double(2.12)
>>> b=c_double(3.4432)
>>> x.Add(a,b)
Traceback (most recent call last):
File "<pyshell#76>", line 1, in <module>
x.Add(a,b)
ValueError: Procedure probably called with too many arguments (16 bytes in excess)
>>>
しかし、パラメーターなしで関数を追加できますか?!?!?!?!
>>> x.Add()
2619260
誰かが私を正しい方向に向けることができますか? 他のdllから関数を呼び出すことができるので、明らかなことを忘れていると思います(例:kernel32)