【发布时间】:2013-04-14 08:39:35
【问题描述】:
以下代码适用于 Python 2:
from ctypes import *
## Setup python file -> c 'FILE *' conversion :
class FILE(Structure):
pass
FILE_P = POINTER(FILE)
PyFile_AsFile = pythonapi.PyFile_AsFile # problem here
PyFile_AsFile.argtypes = [py_object]
PyFile_AsFile.restype = FILE_P
fp = open(filename,'wb')
gd.gdImagePng(img, PyFile_AsFile(fp))
但在 Python 3 中,pythonapi 中没有 PyFile_AsFile。
代码是来自testPixelOps.py 的例外。
【问题讨论】:
-
看起来有解决方案here,但它对我来说是段错误。
-
啊,我知道它为什么会出现段错误。我将文件描述符用作 FILE*...
-
完全可以回答你自己的问题并接受它,当然如果没有其他更好的答案
-
@jamylak:我没有找到答案。我才发现我做错了什么。我不认为它实际上是一个解决方案,因为它们只是根据版本导入不同的 API 函数,但实际上并没有使用它们。
-
为什么要使用 ctypes 调用
PyFile_AsFile?您可以使用 ctypes 来获取使用 Python 无法获得的东西。
标签: python python-3.x ctypes ffi