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 であり、理由がわからないことに気付きました。また、out の結果は c_double、つまり 12.15 である必要がありますが、0 として表示されます。

ご意見をお聞かせください。

4

2 に答える 2

3

DLL.SimpleMathを返すように指示する必要がありますc_double。私の知る限り、これは で行われ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 に答える