为什么输出是Integer而不是c_double?

时间:2013-10-29 14:55:51

标签: python python-2.7

我不知道为什么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.

请建议。

2 个答案:

答案 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。