我制作了一个包含以下代码的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);
问题是add函数返回的不是a+b,而是一个乱七八糟的值: 2619340
请帮帮忙
发布于 2013-08-26 16:52:50
返回类型为double
,所以您应该这样设置restype
:
hllDll.add.restype = ctypes.c_double
hllDll.add.argtypes = [ctypes.c_double, ctypes.c_double]
发布于 2019-12-13 02:32:12
a = ctypes.c_double(1);
b = ctypes.c_double(2);
mydll = ctypes.CDLL('testDll.dll');
mydll.AddNumbers.restype = ctypes.c_double;
ret = mydll.AddNumbers(a, b);
https://stackoverflow.com/questions/18440139
复制相似问题