如何在python中使用ctypes在dll例程中传递文件指针

时间:2015-05-21 15:30:38

标签: python python-2.7 dll ctypes

我正在从dll访问一个需要文件指针(char * filename)的函数。我怎么能通过python传递它?

handle = cdll.dsp

p = open("signal.txt", "r")

handle.filter(p)

1 个答案:

答案 0 :(得分:0)

文件指针为FILE *。但是你提到你需要char *filename,它是一个char指针(即以空字符结尾的字符串)。我假设C函数有一个原型void filter(char *filename)

首先,您必须define the function argument types and the return type

import ctypes
filter = ctypes.cdll.dsp.filter
filter.argtypes = (ctypes.c_char_p,)
filter.restype = None  # Or whatever type it returns.

然后你称之为:

filter("signal.txt")

顺便说一句,你把你的问题标记为Python 2.7,但现在你应该继续使用Python 3,除非你有充分的理由留在旧版本。