2013-08-26 87 views
0

我做了其中包含的代碼一個dll:蟒蛇DLL返回值是錯誤的

#pragma once 

extern double __declspec(dllexport) add(double a, double b); 
extern double __declspec(dllexport) dif(double a, double b); 

#include "testdll.h" 

double add(double a, double b) 
{ 
    return a + b; 
} 

double dif(double a, double b) 
{ 
    return a - b; 
} 

它調用add函數的Python代碼:

a = ctypes.c_double(1); 
    b = ctypes.c_double(2); 
    mydll = ctypes.CDLL('testDll.dll'); 
    mydll.restype = ctypes.c_double; 
    ret = mydll.AddNumbers(a, b); 

的問題是,附加功能犯規返回A + b,但一個screwd了值:2619340

請幫

+0

奇怪的是它可以正確地處理整數。只有雙打使問題... – TraceKira

+0

- 更改代碼不使用python函數來獲得結果。結果仍然是錯誤的。 – TraceKira

回答

2

返回類型爲double,所以你應該設置restype像這樣:

hllDll.add.restype = ctypes.c_double 
hllDll.add.argtypes = [ctypes.c_double, ctypes.c_double] 
+0

不,它不工作。奇怪的是它適用於整數O_O – TraceKira