python - 在 python 中导入的 C 函数给出了无意义的输出 - 翻译事故?
问题描述
我正在将一些代码从 C 转换为 Python 3,并检查函数是否提供正确的输出。
在 C 代码的手册中,这就是它对pb_get_version()
函数的说明:
然后我尝试在 Python 中实现它。我加载 DLL,定义函数,并打印它的输出。
import ctypes
spinapi = ctypes.CDLL("spinapi64")
pb_get_version = spinapi.pb_get_version
version = pb_get_version()
print("Using SpinAPI Library version {}".format(version))
% Using SpinAPI Library version 331435824
输出不像我期望的那样在 YYYMMDD 中......
这可能是从 DLL (C) 到 Python 的翻译错误吗?有没有一种简单的方法可以翻译char*
成python?
解决方案
默认情况下,ctypes
假定函数返回一个int
. 您必须指定该函数返回 achar*
才能使其工作。在调用函数之前尝试以下操作:
pb_get_version.restype = ctypes.c_char_p
推荐阅读
- webpack-4 - 如何为使用 webpacks 4 构建的 aurelia 应用程序创建运行时配置文件
- python - 为什么 django 管理页面不包含任何 css?
- reactjs - React 功能组件中的 lodash debounce 不起作用
- python - 如何使用分组计算更新熊猫数据框?
- vb.net - 带有多色文本的图表标注注释
- r - 将一个节点连接到其他两个节点之间的边缘
- jenkins - 基于 currentBuild.result 的条件步骤
- tsql - TSQL——优化器如何处理未使用表的连接
- r - 如何比较不同数据框中的日期并将值分配给另一个数据框中同一列的一个数据框中的同一列?
- angular - 为什么角度 EventEmitter 订阅方法参数不是强类型的?