Я пытаюсь использовать Cython, чтобы написать обертку вокруг библиотеки C++. Однако сейчас я сталкиваюсь с проблемой, так как одна из функций библиотеки принимает параметр const char**
. По-видимому, C++ не может сделать это преобразование (Why am I getting an error converting a ‘float**’ to ‘const float**’?), что оставляет меня в дилемме, поскольку я передаю список строк, назовем это x
в функцию, и я пытаюсь сгенерировать соответствующий объект char ** , давайте назовем его a
, используя таНос и для цикла:Cython как преобразовать char ** в const char **?
def f(x):
cdef char** a = <char**> malloc(len(x) * sizeof(char*))
for index, item in enumerate(x):
a[index] = item
......
есть обходной путь здесь? Единственное, о чем я могу думать, это использовать const_cast
, и я не могу найти никаких подробностей о том, реализовано ли в Cython ....
Он сделал, спасибо! – Alex
Это работает до тех пор, пока список 'x' где-то упоминается. После этого массив указывает на ячейки памяти, которые были освобождены и, возможно, повторно использованы. Также изменения в содержимом 'x' могут вызвать проблемы. –