我不知道为什么OUT =整数值,因为我将它声明为c_double?
基本上,我的DLL非常简单,即X + Y = Z
enter code here
import ctypes
from sys import exit
X = ctypes.c_double(6.97)
Y = ctypes.c_double(5.18)
out=ctypes.c_double()
DLLHANDLE = ctypes.cdll.LoadLibrary("C:\\Walter\\Pyhton_Examples\\Math\\SharedLib.dll")
out = DLLHANDLE.SimpleMath(X,Y)
print("Addition:",out)
exit()
输出结果如下,
('Addition:', 0)
type (out)
<type 'int'>
注意到,out = int并且不知道为什么???并且out结果应该在c_double中,即12.15但是显示为0.
请建议。
答案 0 :(得分:3)
您必须告诉DLL.SimpleMath
返回c_double
。 AFAIK这是通过DLL.SimpleMath.restype = c_double
完成的。
设置out = c_double()
并稍后用其他对象覆盖它将不会产生任何后果。
答案 1 :(得分:0)
您可以使用:
out = ctypes.c_double(DLLHANDLE.SimpleMath(X,Y))
这应该将整数转换为c_double。