2015-05-21 72 views
0

我正在從需要文件指針(char * filename)的dll訪問一個函數。我如何通過python傳遞它?如何在python中使用ctypes在dll例程中傳遞文件指針

handle = cdll.dsp 

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

handle.filter(p) 
+0

「文件指針」是「FILE *」,而「char *」是一個字符串。 –

+0

嗨,艾布拉姆斯, 所以根據你什麼是char * filename 的含義如果我錯了,請讓我知道 –

+0

呃......它聽起來像一個字符串包含一個文件名給我...... –

回答

0

文件指針是FILE *。但是你提到你需要char *filename,它是一個char指針(即一個以null結尾的字符串)。我將假設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,除非你有一個很好的理由留在舊版本。