1

我不知道为什么 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 并且不知道为什么???并且输出结果应该在 c_double 中,即 12.15 但显示为 0。

请指教。

4

2 回答 2

3

你必须告诉DLL.SimpleMath返回一个c_double. AFAIK 这是用DLL.SimpleMath.restype = c_double.

out = c_double()稍后用另一个对象设置和覆盖它不会有任何后果。

于 2013-10-29T15:01:21.117 回答
0

你可以使用:

out = ctypes.c_double(DLLHANDLE.SimpleMath(X,Y))

这应该将您的整数转换为 c_double。

于 2013-10-29T15:05:14.410 回答