You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python ctypes调用C函数返回整数而非浮点数问题求助

问题解决:ctypes调用C函数返回值不符合预期

问题原因

ctypes 默认将通过 CDLL 加载的函数返回值类型视为 int,但你的C函数实际返回的是 float 类型。这种类型不匹配导致浮点返回值被错误解析为整数,最终得到了非预期结果。

解决方法

需要显式指定C函数的返回值类型为 c_float,同时建议显式声明参数类型,让调用更规范:

修改后的main.py代码:

from ctypes import *

so_file = '/home/folder/spammodule.so'
main = CDLL(so_file)

# 指定函数返回值类型为float
main.calculate_change.restype = c_float
# 可选:显式声明参数类型,提升调用严谨性
main.calculate_change.argtypes = [c_float, c_float]

print(main.calculate_change(100.0, 200.0))

额外说明

  • 显式设置 restype 和 argtypes 不仅能解决返回值解析错误,还能在调用时自动完成类型转换,无需手动用 c_float() 包装参数。
  • 对于涉及复杂类型交互的ctypes调用,显式声明类型是避免错误的最佳实践。

内容的提问来源于stack exchange,提问作者Stack

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 13:35:21