首页 > 解决方案 > 在 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?

标签: pythonc

解决方案


默认情况下,ctypes假定函数返回一个int. 您必须指定该函数返回 achar*才能使其工作。在调用函数之前尝试以下操作:

pb_get_version.restype = ctypes.c_char_p

推荐阅读